diff options
author | Google APIs <noreply@google.com> | 2020-03-16 18:48:15 -0700 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2020-03-16 18:48:49 -0700 |
commit | b2cf37e7fd62383a811aa4d54d013ecae638851d (patch) | |
tree | e6ec39b5a48c62f96927768e307be432e0e4f6af | |
parent | 1976b9981e2900c8172b7d34b4220bdb18c5db42 (diff) | |
download | googleapis-b2cf37e7fd62383a811aa4d54d013ecae638851d.tar.gz |
Data Catalog V1 API
PiperOrigin-RevId: 301282503
-rw-r--r-- | google/cloud/datacatalog/v1/common.proto | 35 | ||||
-rw-r--r-- | google/cloud/datacatalog/v1/datacatalog.proto | 1183 | ||||
-rwxr-xr-x | google/cloud/datacatalog/v1/datacatalog_grpc_service_config.json | 65 | ||||
-rw-r--r-- | google/cloud/datacatalog/v1/datacatalog_v1.yaml | 51 | ||||
-rw-r--r-- | google/cloud/datacatalog/v1/gcs_fileset_spec.proto | 72 | ||||
-rw-r--r-- | google/cloud/datacatalog/v1/schema.proto | 52 | ||||
-rw-r--r-- | google/cloud/datacatalog/v1/search.proto | 81 | ||||
-rw-r--r-- | google/cloud/datacatalog/v1/table_spec.proto | 98 | ||||
-rw-r--r-- | google/cloud/datacatalog/v1/tags.proto | 223 | ||||
-rw-r--r-- | google/cloud/datacatalog/v1/timestamps.proto | 38 |
10 files changed, 1898 insertions, 0 deletions
diff --git a/google/cloud/datacatalog/v1/common.proto b/google/cloud/datacatalog/v1/common.proto new file mode 100644 index 000000000..179a3dc3e --- /dev/null +++ b/google/cloud/datacatalog/v1/common.proto @@ -0,0 +1,35 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.cloud.datacatalog.v1; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/cloud/datacatalog/v1;datacatalog"; +option java_multiple_files = true; +option java_package = "com.google.cloud.datacatalog.v1"; + +// This enum describes all the possible systems that Data Catalog integrates +// with. +enum IntegratedSystem { + // Default unknown system. + INTEGRATED_SYSTEM_UNSPECIFIED = 0; + + // BigQuery. + BIGQUERY = 1; + + // Cloud Pub/Sub. + CLOUD_PUBSUB = 2; +} diff --git a/google/cloud/datacatalog/v1/datacatalog.proto b/google/cloud/datacatalog/v1/datacatalog.proto new file mode 100644 index 000000000..34fdaf8e5 --- /dev/null +++ b/google/cloud/datacatalog/v1/datacatalog.proto @@ -0,0 +1,1183 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.cloud.datacatalog.v1; + +import "google/api/annotations.proto"; +import "google/api/client.proto"; +import "google/api/field_behavior.proto"; +import "google/api/resource.proto"; +import "google/cloud/datacatalog/v1/common.proto"; +import "google/cloud/datacatalog/v1/gcs_fileset_spec.proto"; +import "google/cloud/datacatalog/v1/schema.proto"; +import "google/cloud/datacatalog/v1/search.proto"; +import "google/cloud/datacatalog/v1/table_spec.proto"; +import "google/cloud/datacatalog/v1/tags.proto"; +import "google/cloud/datacatalog/v1/timestamps.proto"; +import "google/iam/v1/iam_policy.proto"; +import "google/iam/v1/policy.proto"; +import "google/protobuf/empty.proto"; +import "google/protobuf/field_mask.proto"; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/cloud/datacatalog/v1;datacatalog"; +option java_multiple_files = true; +option java_package = "com.google.cloud.datacatalog.v1"; + +// Data Catalog API service allows clients to discover, understand, and manage +// their data. +service DataCatalog { + option (google.api.default_host) = "datacatalog.googleapis.com"; + option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform"; + + // Searches Data Catalog for multiple resources like entries, tags that + // match a query. + // + // This is a custom method + // (https://cloud.google.com/apis/design/custom_methods) and does not return + // the complete resource, only the resource identifier and high level + // fields. Clients can subsequentally call `Get` methods. + // + // Note that Data Catalog search queries do not guarantee full recall. Query + // results that match your query may not be returned, even in subsequent + // result pages. Also note that results returned (and not returned) can vary + // across repeated search queries. + // + // See [Data Catalog Search + // Syntax](/data-catalog/docs/how-to/search-reference) for more information. + rpc SearchCatalog(SearchCatalogRequest) returns (SearchCatalogResponse) { + option (google.api.http) = { + post: "/v1/catalog:search" + body: "*" + }; + option (google.api.method_signature) = "scope,query"; + } + + // Creates an EntryGroup. + // + // An entry group contains logically related entries together with Cloud + // Identity and Access Management policies that specify the users who can + // create, edit, and view entries within the entry group. + // + // Data Catalog automatically creates an entry group for BigQuery entries + // ("@bigquery") and Pub/Sub topics ("@pubsub"). Users create their own entry + // group to contain Cloud Storage fileset entries or custom type entries, + // and the IAM policies associated with those entries. Entry groups, like + // entries, can be searched. + // + // A maximum of 10,000 entry groups may be created per organization across all + // locations. + // + // Users should enable the Data Catalog API in the project identified by + // the `parent` parameter (see [Data Catalog Resource Project] + // (/data-catalog/docs/concepts/resource-project) for more information). + rpc CreateEntryGroup(CreateEntryGroupRequest) returns (EntryGroup) { + option (google.api.http) = { + post: "/v1/{parent=projects/*/locations/*}/entryGroups" + body: "entry_group" + }; + option (google.api.method_signature) = "parent,entry_group_id,entry_group"; + } + + // Gets an EntryGroup. + rpc GetEntryGroup(GetEntryGroupRequest) returns (EntryGroup) { + option (google.api.http) = { + get: "/v1/{name=projects/*/locations/*/entryGroups/*}" + }; + option (google.api.method_signature) = "name"; + option (google.api.method_signature) = "name,read_mask"; + } + + // Updates an EntryGroup. The user should enable the Data Catalog API in the + // project identified by the `entry_group.name` parameter (see [Data Catalog + // Resource Project] (/data-catalog/docs/concepts/resource-project) for more + // information). + rpc UpdateEntryGroup(UpdateEntryGroupRequest) returns (EntryGroup) { + option (google.api.http) = { + patch: "/v1/{entry_group.name=projects/*/locations/*/entryGroups/*}" + body: "entry_group" + }; + option (google.api.method_signature) = "entry_group"; + option (google.api.method_signature) = "entry_group,update_mask"; + } + + // Deletes an EntryGroup. Only entry groups that do not contain entries can be + // deleted. Users should enable the Data Catalog API in the project + // identified by the `name` parameter (see [Data Catalog Resource Project] + // (/data-catalog/docs/concepts/resource-project) for more information). + rpc DeleteEntryGroup(DeleteEntryGroupRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + delete: "/v1/{name=projects/*/locations/*/entryGroups/*}" + }; + option (google.api.method_signature) = "name"; + } + + // Lists entry groups. + rpc ListEntryGroups(ListEntryGroupsRequest) returns (ListEntryGroupsResponse) { + option (google.api.http) = { + get: "/v1/{parent=projects/*/locations/*}/entryGroups" + }; + option (google.api.method_signature) = "parent"; + } + + // Creates an entry. Only entries of 'FILESET' type or user-specified type can + // be created. + // + // Users should enable the Data Catalog API in the project identified by + // the `parent` parameter (see [Data Catalog Resource Project] + // (/data-catalog/docs/concepts/resource-project) for more information). + // + // A maximum of 100,000 entries may be created per entry group. + rpc CreateEntry(CreateEntryRequest) returns (Entry) { + option (google.api.http) = { + post: "/v1/{parent=projects/*/locations/*/entryGroups/*}/entries" + body: "entry" + }; + option (google.api.method_signature) = "parent,entry_id,entry"; + } + + // Updates an existing entry. + // Users should enable the Data Catalog API in the project identified by + // the `entry.name` parameter (see [Data Catalog Resource Project] + // (/data-catalog/docs/concepts/resource-project) for more information). + rpc UpdateEntry(UpdateEntryRequest) returns (Entry) { + option (google.api.http) = { + patch: "/v1/{entry.name=projects/*/locations/*/entryGroups/*/entries/*}" + body: "entry" + }; + option (google.api.method_signature) = "entry"; + option (google.api.method_signature) = "entry,update_mask"; + } + + // Deletes an existing entry. Only entries created through + // [CreateEntry][google.cloud.datacatalog.v1.DataCatalog.CreateEntry] + // method can be deleted. + // Users should enable the Data Catalog API in the project identified by + // the `name` parameter (see [Data Catalog Resource Project] + // (/data-catalog/docs/concepts/resource-project) for more information). + rpc DeleteEntry(DeleteEntryRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + delete: "/v1/{name=projects/*/locations/*/entryGroups/*/entries/*}" + }; + option (google.api.method_signature) = "name"; + } + + // Gets an entry. + rpc GetEntry(GetEntryRequest) returns (Entry) { + option (google.api.http) = { + get: "/v1/{name=projects/*/locations/*/entryGroups/*/entries/*}" + }; + option (google.api.method_signature) = "name"; + } + + // Get an entry by target resource name. This method allows clients to use + // the resource name from the source Google Cloud Platform service to get the + // Data Catalog Entry. + rpc LookupEntry(LookupEntryRequest) returns (Entry) { + option (google.api.http) = { + get: "/v1/entries:lookup" + }; + } + + // Lists entries. + rpc ListEntries(ListEntriesRequest) returns (ListEntriesResponse) { + option (google.api.http) = { + get: "/v1/{parent=projects/*/locations/*/entryGroups/*}/entries" + }; + option (google.api.method_signature) = "parent"; + } + + // Creates a tag template. The user should enable the Data Catalog API in + // the project identified by the `parent` parameter (see [Data Catalog + // Resource Project](/data-catalog/docs/concepts/resource-project) for more + // information). + rpc CreateTagTemplate(CreateTagTemplateRequest) returns (TagTemplate) { + option (google.api.http) = { + post: "/v1/{parent=projects/*/locations/*}/tagTemplates" + body: "tag_template" + }; + option (google.api.method_signature) = "parent,tag_template_id,tag_template"; + } + + // Gets a tag template. + rpc GetTagTemplate(GetTagTemplateRequest) returns (TagTemplate) { + option (google.api.http) = { + get: "/v1/{name=projects/*/locations/*/tagTemplates/*}" + }; + option (google.api.method_signature) = "name"; + } + + // Updates a tag template. This method cannot be used to update the fields of + // a template. The tag template fields are represented as separate resources + // and should be updated using their own create/update/delete methods. + // Users should enable the Data Catalog API in the project identified by + // the `tag_template.name` parameter (see [Data Catalog Resource Project] + // (/data-catalog/docs/concepts/resource-project) for more information). + rpc UpdateTagTemplate(UpdateTagTemplateRequest) returns (TagTemplate) { + option (google.api.http) = { + patch: "/v1/{tag_template.name=projects/*/locations/*/tagTemplates/*}" + body: "tag_template" + }; + option (google.api.method_signature) = "tag_template"; + option (google.api.method_signature) = "tag_template,update_mask"; + } + + // Deletes a tag template and all tags using the template. + // Users should enable the Data Catalog API in the project identified by + // the `name` parameter (see [Data Catalog Resource Project] + // (/data-catalog/docs/concepts/resource-project) for more information). + rpc DeleteTagTemplate(DeleteTagTemplateRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + delete: "/v1/{name=projects/*/locations/*/tagTemplates/*}" + }; + option (google.api.method_signature) = "name,force"; + } + + // Creates a field in a tag template. The user should enable the Data Catalog + // API in the project identified by the `parent` parameter (see + // [Data Catalog Resource + // Project](/data-catalog/docs/concepts/resource-project) for more + // information). + rpc CreateTagTemplateField(CreateTagTemplateFieldRequest) returns (TagTemplateField) { + option (google.api.http) = { + post: "/v1/{parent=projects/*/locations/*/tagTemplates/*}/fields" + body: "tag_template_field" + }; + option (google.api.method_signature) = "parent,tag_template_field_id,tag_template_field"; + } + + // Updates a field in a tag template. This method cannot be used to update the + // field type. Users should enable the Data Catalog API in the project + // identified by the `name` parameter (see [Data Catalog Resource Project] + // (/data-catalog/docs/concepts/resource-project) for more information). + rpc UpdateTagTemplateField(UpdateTagTemplateFieldRequest) returns (TagTemplateField) { + option (google.api.http) = { + patch: "/v1/{name=projects/*/locations/*/tagTemplates/*/fields/*}" + body: "tag_template_field" + }; + option (google.api.method_signature) = "name,tag_template_field"; + option (google.api.method_signature) = "name,tag_template_field,update_mask"; + } + + // Renames a field in a tag template. The user should enable the Data Catalog + // API in the project identified by the `name` parameter (see [Data Catalog + // Resource Project](/data-catalog/docs/concepts/resource-project) for more + // information). + rpc RenameTagTemplateField(RenameTagTemplateFieldRequest) returns (TagTemplateField) { + option (google.api.http) = { + post: "/v1/{name=projects/*/locations/*/tagTemplates/*/fields/*}:rename" + body: "*" + }; + option (google.api.method_signature) = "name,new_tag_template_field_id"; + } + + // Deletes a field in a tag template and all uses of that field. + // Users should enable the Data Catalog API in the project identified by + // the `name` parameter (see [Data Catalog Resource Project] + // (/data-catalog/docs/concepts/resource-project) for more information). + rpc DeleteTagTemplateField(DeleteTagTemplateFieldRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + delete: "/v1/{name=projects/*/locations/*/tagTemplates/*/fields/*}" + }; + option (google.api.method_signature) = "name,force"; + } + + // Creates a tag on an [Entry][google.cloud.datacatalog.v1.Entry]. + // Note: The project identified by the `parent` parameter for the + // [tag](/data-catalog/docs/reference/rest/v1/projects.locations.entryGroups.entries.tags/create#path-parameters) + // and the + // [tag + // template](/data-catalog/docs/reference/rest/v1/projects.locations.tagTemplates/create#path-parameters) + // used to create the tag must be from the same organization. + rpc CreateTag(CreateTagRequest) returns (Tag) { + option (google.api.http) = { + post: "/v1/{parent=projects/*/locations/*/entryGroups/*/entries/*}/tags" + body: "tag" + additional_bindings { + post: "/v1/{parent=projects/*/locations/*/entryGroups/*}/tags" + body: "tag" + } + }; + option (google.api.method_signature) = "parent,tag"; + } + + // Updates an existing tag. + rpc UpdateTag(UpdateTagRequest) returns (Tag) { + option (google.api.http) = { + patch: "/v1/{tag.name=projects/*/locations/*/entryGroups/*/entries/*/tags/*}" + body: "tag" + additional_bindings { + patch: "/v1/{tag.name=projects/*/locations/*/entryGroups/*/tags/*}" + body: "tag" + } + }; + option (google.api.method_signature) = "tag"; + option (google.api.method_signature) = "tag,update_mask"; + } + + // Deletes a tag. + rpc DeleteTag(DeleteTagRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + delete: "/v1/{name=projects/*/locations/*/entryGroups/*/entries/*/tags/*}" + additional_bindings { + delete: "/v1/{name=projects/*/locations/*/entryGroups/*/tags/*}" + } + }; + option (google.api.method_signature) = "name"; + } + + // Lists the tags on an [Entry][google.cloud.datacatalog.v1.Entry]. + rpc ListTags(ListTagsRequest) returns (ListTagsResponse) { + option (google.api.http) = { + get: "/v1/{parent=projects/*/locations/*/entryGroups/*/entries/*}/tags" + additional_bindings { + get: "/v1/{parent=projects/*/locations/*/entryGroups/*}/tags" + } + }; + option (google.api.method_signature) = "parent"; + } + + // Sets the access control policy for a resource. Replaces any existing + // policy. + // Supported resources are: + // - Tag templates. + // - Entries. + // - Entry groups. + // Note, this method cannot be used to manage policies for BigQuery, Cloud + // Pub/Sub and any external Google Cloud Platform resources synced to Cloud + // Data Catalog. + // + // Callers must have following Google IAM permission + // - `datacatalog.tagTemplates.setIamPolicy` to set policies on tag + // templates. + // - `datacatalog.entries.setIamPolicy` to set policies on entries. + // - `datacatalog.entryGroups.setIamPolicy` to set policies on entry groups. + rpc SetIamPolicy(google.iam.v1.SetIamPolicyRequest) returns (google.iam.v1.Policy) { + option (google.api.http) = { + post: "/v1/{resource=projects/*/locations/*/tagTemplates/*}:setIamPolicy" + body: "*" + additional_bindings { + post: "/v1/{resource=projects/*/locations/*/entryGroups/*}:setIamPolicy" + body: "*" + } + }; + } + + // Gets the access control policy for a resource. A `NOT_FOUND` error + // is returned if the resource does not exist. An empty policy is returned + // if the resource exists but does not have a policy set on it. + // + // Supported resources are: + // - Tag templates. + // - Entries. + // - Entry groups. + // Note, this method cannot be used to manage policies for BigQuery, Cloud + // Pub/Sub and any external Google Cloud Platform resources synced to Cloud + // Data Catalog. + // + // Callers must have following Google IAM permission + // - `datacatalog.tagTemplates.getIamPolicy` to get policies on tag + // templates. + // - `datacatalog.entries.getIamPolicy` to get policies on entries. + // - `datacatalog.entryGroups.getIamPolicy` to get policies on entry groups. + rpc GetIamPolicy(google.iam.v1.GetIamPolicyRequest) returns (google.iam.v1.Policy) { + option (google.api.http) = { + post: "/v1/{resource=projects/*/locations/*/tagTemplates/*}:getIamPolicy" + body: "*" + additional_bindings { + post: "/v1/{resource=projects/*/locations/*/entryGroups/*}:getIamPolicy" + body: "*" + } + additional_bindings { + post: "/v1/{resource=projects/*/locations/*/entryGroups/*/entries/*}:getIamPolicy" + body: "*" + } + }; + } + + // Returns the caller's permissions on a resource. + // If the resource does not exist, an empty set of permissions is returned + // (We don't return a `NOT_FOUND` error). + // + // Supported resources are: + // - Tag templates. + // - Entries. + // - Entry groups. + // Note, this method cannot be used to manage policies for BigQuery, Cloud + // Pub/Sub and any external Google Cloud Platform resources synced to Cloud + // Data Catalog. + // + // A caller is not required to have Google IAM permission to make this + // request. + rpc TestIamPermissions(google.iam.v1.TestIamPermissionsRequest) returns (google.iam.v1.TestIamPermissionsResponse) { + option (google.api.http) = { + post: "/v1/{resource=projects/*/locations/*/tagTemplates/*}:testIamPermissions" + body: "*" + additional_bindings { + post: "/v1/{resource=projects/*/locations/*/entryGroups/*}:testIamPermissions" + body: "*" + } + additional_bindings { + post: "/v1/{resource=projects/*/locations/*/entryGroups/*/entries/*}:testIamPermissions" + body: "*" + } + }; + } +} + +// Request message for +// [SearchCatalog][google.cloud.datacatalog.v1.DataCatalog.SearchCatalog]. +message SearchCatalogRequest { + // The criteria that select the subspace used for query matching. + message Scope { + // The list of organization IDs to search within. To find your organization + // ID, follow instructions in + // https://cloud.google.com/resource-manager/docs/creating-managing-organization. + repeated string include_org_ids = 2; + + // The list of project IDs to search within. To learn more about the + // distinction between project names/IDs/numbers, go to + // https://cloud.google.com/docs/overview/#projects. + repeated string include_project_ids = 3; + + // If `true`, include Google Cloud Platform (GCP) public datasets in the + // search results. Info on GCP public datasets is available at + // https://cloud.google.com/public-datasets/. By default, GCP public + // datasets are excluded. + bool include_gcp_public_datasets = 7; + } + + // Required. The scope of this search request. A `scope` that has empty + // `include_org_ids`, `include_project_ids` AND false + // `include_gcp_public_datasets` is considered invalid. Data Catalog will + // return an error in such a case. + Scope scope = 6 [(google.api.field_behavior) = REQUIRED]; + + // Required. The query string in search query syntax. The query must be non-empty. + // + // Query strings can be simple as "x" or more qualified as: + // + // * name:x + // * column:x + // * description:y + // + // Note: Query tokens need to have a minimum of 3 characters for substring + // matching to work correctly. See [Data Catalog Search + // Syntax](/data-catalog/docs/how-to/search-reference) for more information. + string query = 1 [(google.api.field_behavior) = REQUIRED]; + + // Number of results in the search page. If <=0 then defaults to 10. Max limit + // for page_size is 1000. Throws an invalid argument for page_size > 1000. + int32 page_size = 2; + + // Optional. Pagination token returned in an earlier + // [SearchCatalogResponse.next_page_token][google.cloud.datacatalog.v1.SearchCatalogResponse.next_page_token], which + // indicates that this is a continuation of a prior + // [SearchCatalogRequest][google.cloud.datacatalog.v1.DataCatalog.SearchCatalog] + // call, and that the system should return the next page of data. If empty, + // the first page is returned. + string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; + + // Specifies the ordering of results, currently supported case-sensitive + // choices are: + // + // * `relevance`, only supports descending + // * `last_modified_timestamp [asc|desc]`, defaults to descending if not + // specified + // + // If not specified, defaults to `relevance` descending. + string order_by = 5; +} + +// Response message for +// [SearchCatalog][google.cloud.datacatalog.v1.DataCatalog.SearchCatalog]. +message SearchCatalogResponse { + // Search results. + repeated SearchCatalogResult results = 1; + + // The token that can be used to retrieve the next page of results. + string next_page_token = 3; +} + +// Request message for +// [CreateEntryGroup][google.cloud.datacatalog.v1.DataCatalog.CreateEntryGroup]. +message CreateEntryGroupRequest { + // Required. The name of the project this entry group is in. Example: + // + // * projects/{project_id}/locations/{location} + // + // Note that this EntryGroup and its child resources may not actually be + // stored in the location in this name. + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + child_type: "datacatalog.googleapis.com/EntryGroup" + } + ]; + + // Required. The id of the entry group to create. + // The id must begin with a letter or underscore, contain only English + // letters, numbers and underscores, and be at most 64 characters. + string entry_group_id = 3 [(google.api.field_behavior) = REQUIRED]; + + // The entry group to create. Defaults to an empty entry group. + EntryGroup entry_group = 2; +} + +// Request message for +// [UpdateEntryGroup][google.cloud.datacatalog.v1.DataCatalog.UpdateEntryGroup]. +message UpdateEntryGroupRequest { + // Required. The updated entry group. "name" field must be set. + EntryGroup entry_group = 1 [(google.api.field_behavior) = REQUIRED]; + + // The fields to update on the entry group. If absent or empty, all modifiable + // fields are updated. + google.protobuf.FieldMask update_mask = 2; +} + +// Request message for +// [GetEntryGroup][google.cloud.datacatalog.v1.DataCatalog.GetEntryGroup]. +message GetEntryGroupRequest { + // Required. The name of the entry group. For example, + // `projects/{project_id}/locations/{location}/entryGroups/{entry_group_id}`. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "datacatalog.googleapis.com/EntryGroup" + } + ]; + + // The fields to return. If not set or empty, all fields are returned. + google.protobuf.FieldMask read_mask = 2; +} + +// Request message for +// [DeleteEntryGroup][google.cloud.datacatalog.v1.DataCatalog.DeleteEntryGroup]. +message DeleteEntryGroupRequest { + // Required. The name of the entry group. For example, + // `projects/{project_id}/locations/{location}/entryGroups/{entry_group_id}`. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "datacatalog.googleapis.com/EntryGroup" + } + ]; + + // Optional. If true, deletes all entries in the entry group. + bool force = 2 [(google.api.field_behavior) = OPTIONAL]; +} + +// Request message for +// [ListEntryGroups][google.cloud.datacatalog.v1.DataCatalog.ListEntryGroups]. +message ListEntryGroupsRequest { + // Required. The name of the location that contains the entry groups, which can be + // provided in URL format. Example: + // + // * projects/{project_id}/locations/{location} + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "datacatalog.googleapis.com/EntryGroup" + } + ]; + + // Optional. The maximum number of items to return. Default is 10. Max limit is 1000. + // Throws an invalid argument for `page_size > 1000`. + int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Token that specifies which page is requested. If empty, the first page is + // returned. + string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; +} + +// Response message for +// [ListEntryGroups][google.cloud.datacatalog.v1.DataCatalog.ListEntryGroups]. +message ListEntryGroupsResponse { + // EntryGroup details. + repeated EntryGroup entry_groups = 1; + + // Token to retrieve the next page of results. It is set to empty if no items + // remain in results. + string next_page_token = 2; +} + +// Request message for +// [CreateEntry][google.cloud.datacatalog.v1.DataCatalog.CreateEntry]. +message CreateEntryRequest { + // Required. The name of the entry group this entry is in. Example: + // + // * projects/{project_id}/locations/{location}/entryGroups/{entry_group_id} + // + // Note that this Entry and its child resources may not actually be stored in + // the location in this name. + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "datacatalog.googleapis.com/EntryGroup" + } + ]; + + // Required. The id of the entry to create. + string entry_id = 3 [(google.api.field_behavior) = REQUIRED]; + + // Required. The entry to create. + Entry entry = 2 [(google.api.field_behavior) = REQUIRED]; +} + +// Request message for +// [UpdateEntry][google.cloud.datacatalog.v1.DataCatalog.UpdateEntry]. +message UpdateEntryRequest { + // Required. The updated entry. The "name" field must be set. + Entry entry = 1 [(google.api.field_behavior) = REQUIRED]; + + // The fields to update on the entry. If absent or empty, all modifiable + // fields are updated. + // + // The following fields are modifiable: + // * For entries with type `DATA_STREAM`: + // * `schema` + // * For entries with type `FILESET` + // * `schema` + // * `display_name` + // * `description` + // * `gcs_fileset_spec` + // * `gcs_fileset_spec.file_patterns` + // * For entries with `user_specified_type` + // * `schema` + // * `display_name` + // * `description` + // * user_specified_type + // * user_specified_system + // * linked_resource + // * source_system_timestamps + google.protobuf.FieldMask update_mask = 2; +} + +// Request message for +// [DeleteEntry][google.cloud.datacatalog.v1.DataCatalog.DeleteEntry]. +message DeleteEntryRequest { + // Required. The name of the entry. Example: + // + // * projects/{project_id}/locations/{location}/entryGroups/{entry_group_id}/entries/{entry_id} + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "datacatalog.googleapis.com/Entry" + } + ]; +} + +// Request message for +// [GetEntry][google.cloud.datacatalog.v1.DataCatalog.GetEntry]. +message GetEntryRequest { + // Required. The name of the entry. Example: + // + // * projects/{project_id}/locations/{location}/entryGroups/{entry_group_id}/entries/{entry_id} + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "datacatalog.googleapis.com/Entry" + } + ]; +} + +// Request message for +// [LookupEntry][google.cloud.datacatalog.v1.DataCatalog.LookupEntry]. +message LookupEntryRequest { + // Required. Represents either the Google Cloud Platform resource or SQL name + // for a Google Cloud Platform resource. + oneof target_name { + // The full name of the Google Cloud Platform resource the Data Catalog + // entry represents. See: + // https://cloud.google.com/apis/design/resource_names#full_resource_name. + // Full names are case-sensitive. + // + // Examples: + // + // * //bigquery.googleapis.com/projects/projectId/datasets/datasetId/tables/tableId + // * //pubsub.googleapis.com/projects/projectId/topics/topicId + string linked_resource = 1; + + // The SQL name of the entry. SQL names are case-sensitive. + // + // Examples: + // + // * `cloud_pubsub.project_id.topic_id` + // * ``pubsub.project_id.`topic.id.with.dots` `` + // * `bigquery.table.project_id.dataset_id.table_id` + // * `bigquery.dataset.project_id.dataset_id` + // * `datacatalog.entry.project_id.location_id.entry_group_id.entry_id` + // + // `*_id`s shoud satisfy the standard SQL rules for identifiers. + // https://cloud.google.com/bigquery/docs/reference/standard-sql/lexical. + string sql_resource = 3; + } +} + +// Entry Metadata. +// A Data Catalog Entry resource represents another resource in Google +// Cloud Platform (such as a BigQuery dataset or a Cloud Pub/Sub topic) or +// outside of Google Cloud Platform. Clients can use the `linked_resource` field +// in the Entry resource to refer to the original resource ID of the source +// system. +// +// An Entry resource contains resource details, such as its schema. An Entry can +// also be used to attach flexible metadata, such as a +// [Tag][google.cloud.datacatalog.v1.Tag]. +message Entry { + option (google.api.resource) = { + type: "datacatalog.googleapis.com/Entry" + pattern: "projects/{project}/locations/{location}/entryGroups/{entry_group}/entries/{entry}" + }; + + // The Data Catalog resource name of the entry in URL format. Example: + // + // * projects/{project_id}/locations/{location}/entryGroups/{entry_group_id}/entries/{entry_id} + // + // Note that this Entry and its child resources may not actually be stored in + // the location in this name. + string name = 1 [(google.api.resource_reference) = { + type: "datacatalog.googleapis.com/EntryGroup" + }]; + + // The resource this metadata entry refers to. + // + // For Google Cloud Platform resources, `linked_resource` is the [full name of + // the + // resource](https://cloud.google.com/apis/design/resource_names#full_resource_name). + // For example, the `linked_resource` for a table resource from BigQuery is: + // + // * //bigquery.googleapis.com/projects/projectId/datasets/datasetId/tables/tableId + // + // Output only when Entry is of type in the EntryType enum. For entries with + // user_specified_type, this field is optional and defaults to an empty + // string. + string linked_resource = 9; + + // Required. Entry type. + oneof entry_type { + // The type of the entry. + // Only used for Entries with types in the EntryType enum. + EntryType type = 2; + + // Entry type if it does not fit any of the input-allowed values listed in + // `EntryType` enum above. When creating an entry, users should check the + // enum values first, if nothing matches the entry to be created, then + // provide a custom value, for example "my_special_type". + // `user_specified_type` strings must begin with a letter or underscore and + // can only contain letters, numbers, and underscores; are case insensitive; + // must be at least 1 character and at most 64 characters long. + // + // Currently, only FILESET enum value is allowed. All other entries created + // through Data Catalog must use `user_specified_type`. + string user_specified_type = 16; + } + + // The source system of the entry. + oneof system { + // Output only. This field indicates the entry's source system that Data Catalog + // integrates with, such as BigQuery or Cloud Pub/Sub. + IntegratedSystem integrated_system = 17 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // This field indicates the entry's source system that Data Catalog does not + // integrate with. `user_specified_system` strings must begin with a letter + // or underscore and can only contain letters, numbers, and underscores; are + // case insensitive; must be at least 1 character and at most 64 characters + // long. + string user_specified_system = 18; + } + + // Type specification information. + oneof type_spec { + // Specification that applies to a Cloud Storage fileset. This is only valid + // on entries of type FILESET. + google.cloud.datacatalog.v1.GcsFilesetSpec gcs_fileset_spec = 6; + + // Specification that applies to a BigQuery table. This is only valid on + // entries of type `TABLE`. + BigQueryTableSpec bigquery_table_spec = 12; + + // Specification for a group of BigQuery tables with name pattern + // `[prefix]YYYYMMDD`. Context: + // https://cloud.google.com/bigquery/docs/partitioned-tables#partitioning_versus_sharding. + BigQueryDateShardedSpec bigquery_date_sharded_spec = 15; + } + + // Display information such as title and description. A short name to identify + // the entry, for example, "Analytics Data - Jan 2011". Default value is an + // empty string. + string display_name = 3; + + // Entry description, which can consist of several sentences or paragraphs + // that describe entry contents. Default value is an empty string. + string description = 4; + + // Schema of the entry. An entry might not have any schema attached to it. + Schema schema = 5; + + // Timestamps about the underlying resource, not about this Data Catalog + // entry. Output only when Entry is of type in the EntryType enum. For entries + // with user_specified_type, this field is optional and defaults to an empty + // timestamp. + SystemTimestamps source_system_timestamps = 7; +} + +// EntryGroup Metadata. +// An EntryGroup resource represents a logical grouping of zero or more +// Data Catalog [Entry][google.cloud.datacatalog.v1.Entry] resources. +message EntryGroup { + option (google.api.resource) = { + type: "datacatalog.googleapis.com/EntryGroup" + pattern: "projects/{project}/locations/{location}/entryGroups/{entry_group}" + }; + + // The resource name of the entry group in URL format. Example: + // + // * projects/{project_id}/locations/{location}/entryGroups/{entry_group_id} + // + // Note that this EntryGroup and its child resources may not actually be + // stored in the location in this name. + string name = 1; + + // A short name to identify the entry group, for example, + // "analytics data - jan 2011". Default value is an empty string. + string display_name = 2; + + // Entry group description, which can consist of several sentences or + // paragraphs that describe entry group contents. Default value is an empty + // string. + string description = 3; + + // Output only. Timestamps about this EntryGroup. Default value is empty timestamps. + SystemTimestamps data_catalog_timestamps = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; +} + +// Request message for +// [CreateTagTemplate][google.cloud.datacatalog.v1.DataCatalog.CreateTagTemplate]. +message CreateTagTemplateRequest { + // Required. The name of the project and the template location + // [region](/compute/docs/regions-zones/#available). + // NOTE: Currently, only the `us-central1 region` is supported. + // + // Example: + // + // * projects/{project_id}/locations/us-central1 + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + child_type: "datacatalog.googleapis.com/TagTemplate" + } + ]; + + // Required. The id of the tag template to create. + string tag_template_id = 3 [(google.api.field_behavior) = REQUIRED]; + + // Required. The tag template to create. + TagTemplate tag_template = 2 [(google.api.field_behavior) = REQUIRED]; +} + +// Entry resources in Data Catalog can be of different types e.g. a BigQuery +// Table entry is of type `TABLE`. This enum describes all the possible types +// Data Catalog contains. +enum EntryType { + // Default unknown type. + ENTRY_TYPE_UNSPECIFIED = 0; + + // Output only. The type of entry that has a GoogleSQL schema, including + // logical views. + TABLE = 2; + + // Output only. The type of models, examples include + // https://cloud.google.com/bigquery-ml/docs/bigqueryml-intro + MODEL = 5; + + // Output only. An entry type which is used for streaming entries. Example: + // Cloud Pub/Sub topic. + DATA_STREAM = 3; + + // An entry type which is a set of files or objects. Example: + // Cloud Storage fileset. + FILESET = 4; +} + +// Request message for +// [GetTagTemplate][google.cloud.datacatalog.v1.DataCatalog.GetTagTemplate]. +message GetTagTemplateRequest { + // Required. The name of the tag template. Example: + // + // * projects/{project_id}/locations/{location}/tagTemplates/{tag_template_id} + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "datacatalog.googleapis.com/TagTemplate" + } + ]; +} + +// Request message for +// [UpdateTagTemplate][google.cloud.datacatalog.v1.DataCatalog.UpdateTagTemplate]. +message UpdateTagTemplateRequest { + // Required. The template to update. The "name" field must be set. + TagTemplate tag_template = 1 [(google.api.field_behavior) = REQUIRED]; + + // The field mask specifies the parts of the template to overwrite. + // + // Allowed fields: + // + // * `display_name` + // + // If absent or empty, all of the allowed fields above will be updated. + google.protobuf.FieldMask update_mask = 2; +} + +// Request message for +// [DeleteTagTemplate][google.cloud.datacatalog.v1.DataCatalog.DeleteTagTemplate]. +message DeleteTagTemplateRequest { + // Required. The name of the tag template to delete. Example: + // + // * projects/{project_id}/locations/{location}/tagTemplates/{tag_template_id} + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "datacatalog.googleapis.com/TagTemplate" + } + ]; + + // Required. Currently, this field must always be set to `true`. + // This confirms the deletion of any possible tags using this template. + // `force = false` will be supported in the future. + bool force = 2 [(google.api.field_behavior) = REQUIRED]; +} + +// Request message for +// [CreateTag][google.cloud.datacatalog.v1.DataCatalog.CreateTag]. +message CreateTagRequest { + // Required. The name of the resource to attach this tag to. Tags can be attached to + // Entries. Example: + // + // * projects/{project_id}/locations/{location}/entryGroups/{entry_group_id}/entries/{entry_id} + // + // Note that this Tag and its child resources may not actually be stored in + // the location in this name. + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "datacatalog.googleapis.com/Tag" + } + ]; + + // Required. The tag to create. + Tag tag = 2 [(google.api.field_behavior) = REQUIRED]; +} + +// Request message for +// [UpdateTag][google.cloud.datacatalog.v1.DataCatalog.UpdateTag]. +message UpdateTagRequest { + // Required. The updated tag. The "name" field must be set. + Tag tag = 1 [(google.api.field_behavior) = REQUIRED]; + + // The fields to update on the Tag. If absent or empty, all modifiable fields + // are updated. Currently the only modifiable field is the field `fields`. + google.protobuf.FieldMask update_mask = 2; +} + +// Request message for +// [DeleteTag][google.cloud.datacatalog.v1.DataCatalog.DeleteTag]. +message DeleteTagRequest { + // Required. The name of the tag to delete. Example: + // + // * projects/{project_id}/locations/{location}/entryGroups/{entry_group_id}/entries/{entry_id}/tags/{tag_id} + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + child_type: "datacatalog.googleapis.com/Tag" + } + ]; +} + +// Request message for +// [CreateTagTemplateField][google.cloud.datacatalog.v1.DataCatalog.CreateTagTemplateField]. +message CreateTagTemplateFieldRequest { + // Required. The name of the project and the template location + // [region](/compute/docs/regions-zones/#available). + // NOTE: Currently, only the `us-central1 region` is supported. + // + // Example: + // + // * projects/{project_id}/locations/us-central1/tagTemplates/{tag_template_id} + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "datacatalog.googleapis.com/TagTemplate" + } + ]; + + // Required. The ID of the tag template field to create. + // Field ids can contain letters (both uppercase and lowercase), numbers + // (0-9), underscores (_) and dashes (-). Field IDs must be at least 1 + // character long and at most 128 characters long. Field IDs must also be + // unique within their template. + string tag_template_field_id = 2 [(google.api.field_behavior) = REQUIRED]; + + // Required. The tag template field to create. + TagTemplateField tag_template_field = 3 [(google.api.field_behavior) = REQUIRED]; +} + +// Request message for +// [UpdateTagTemplateField][google.cloud.datacatalog.v1.DataCatalog.UpdateTagTemplateField]. +message UpdateTagTemplateFieldRequest { + // Required. The name of the tag template field. Example: + // + // * projects/{project_id}/locations/{location}/tagTemplates/{tag_template_id}/fields/{tag_template_field_id} + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "datacatalog.googleapis.com/TagTemplateField" + } + ]; + + // Required. The template to update. + TagTemplateField tag_template_field = 2 [(google.api.field_behavior) = REQUIRED]; + + // Optional. The field mask specifies the parts of the template to be updated. + // Allowed fields: + // + // * `display_name` + // * `type.enum_type` + // * `is_required` + // + // If `update_mask` is not set or empty, all of the allowed fields above will + // be updated. + // + // When updating an enum type, the provided values will be merged with the + // existing values. Therefore, enum values can only be added, existing enum + // values cannot be deleted nor renamed. Updating a template field from + // optional to required is NOT allowed. + google.protobuf.FieldMask update_mask = 3 [(google.api.field_behavior) = OPTIONAL]; +} + +// Request message for +// [RenameTagTemplateField][google.cloud.datacatalog.v1.DataCatalog.RenameTagTemplateField]. +message RenameTagTemplateFieldRequest { + // Required. The name of the tag template. Example: + // + // * projects/{project_id}/locations/{location}/tagTemplates/{tag_template_id}/fields/{tag_template_field_id} + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "datacatalog.googleapis.com/TagTemplateField" + } + ]; + + // Required. The new ID of this tag template field. For example, `my_new_field`. + string new_tag_template_field_id = 2 [(google.api.field_behavior) = REQUIRED]; +} + +// Request message for +// [DeleteTagTemplateField][google.cloud.datacatalog.v1.DataCatalog.DeleteTagTemplateField]. +message DeleteTagTemplateFieldRequest { + // Required. The name of the tag template field to delete. Example: + // + // * projects/{project_id}/locations/{location}/tagTemplates/{tag_template_id}/fields/{tag_template_field_id} + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "datacatalog.googleapis.com/TagTemplateField" + } + ]; + + // Required. Currently, this field must always be set to `true`. + // This confirms the deletion of this field from any tags using this field. + // `force = false` will be supported in the future. + bool force = 2 [(google.api.field_behavior) = REQUIRED]; +} + +// Request message for +// [ListTags][google.cloud.datacatalog.v1.DataCatalog.ListTags]. +message ListTagsRequest { + // Required. The name of the Data Catalog resource to list the tags of. The resource + // could be an [Entry][google.cloud.datacatalog.v1.Entry] or an + // [EntryGroup][google.cloud.datacatalog.v1.EntryGroup]. + // + // Examples: + // + // * projects/{project_id}/locations/{location}/entryGroups/{entry_group_id} + // * projects/{project_id}/locations/{location}/entryGroups/{entry_group_id}/entries/{entry_id} + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + child_type: "datacatalog.googleapis.com/Tag" + } + ]; + + // The maximum number of tags to return. Default is 10. Max limit is 1000. + int32 page_size = 2; + + // Token that specifies which page is requested. If empty, the first page is + // returned. + string page_token = 3; +} + +// Response message for +// [ListTags][google.cloud.datacatalog.v1.DataCatalog.ListTags]. +message ListTagsResponse { + // [Tag][google.cloud.datacatalog.v1.Tag] details. + repeated Tag tags = 1; + + // Token to retrieve the next page of results. It is set to empty if no items + // remain in results. + string next_page_token = 2; +} + +// Request message for +// [ListEntries][google.cloud.datacatalog.v1.DataCatalog.ListEntries]. +message ListEntriesRequest { + // Required. The name of the entry group that contains the entries, which can + // be provided in URL format. Example: + // + // * projects/{project_id}/locations/{location}/entryGroups/{entry_group_id} + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "datacatalog.googleapis.com/EntryGroup" + } + ]; + + // The maximum number of items to return. Default is 10. Max limit is 1000. + // Throws an invalid argument for `page_size > 1000`. + int32 page_size = 2; + + // Token that specifies which page is requested. If empty, the first page is + // returned. + string page_token = 3; + + // The fields to return for each Entry. If not set or empty, all + // fields are returned. + // For example, setting read_mask to contain only one path "name" will cause + // ListEntries to return a list of Entries with only "name" field. + google.protobuf.FieldMask read_mask = 4; +} + +// Response message for +// [ListEntries][google.cloud.datacatalog.v1.DataCatalog.ListEntries]. +message ListEntriesResponse { + // Entry details. + repeated Entry entries = 1; + + // Token to retrieve the next page of results. It is set to empty if no items + // remain in results. + string next_page_token = 2; +} diff --git a/google/cloud/datacatalog/v1/datacatalog_grpc_service_config.json b/google/cloud/datacatalog/v1/datacatalog_grpc_service_config.json new file mode 100755 index 000000000..b683fa856 --- /dev/null +++ b/google/cloud/datacatalog/v1/datacatalog_grpc_service_config.json @@ -0,0 +1,65 @@ +{ + "methodConfig": [ + { + "name": [ + { + "service": "google.cloud.datacatalog.v1.DataCatalog" + } + ], + "timeout": "60s" + }, + { + "name": [ + { + "service": "google.cloud.datacatalog.v1.DataCatalog", + "method": "GetEntry" + }, + { + "service": "google.cloud.datacatalog.v1.DataCatalog", + "method": "GetEntryGroup" + }, + { + "service": "google.cloud.datacatalog.v1.DataCatalog", + "method": "GetIamPolicy" + }, + { + "service": "google.cloud.datacatalog.v1.DataCatalog", + "method": "GettagTemplate" + }, + { + "service": "google.cloud.datacatalog.v1.DataCatalog", + "method": "ListEntries" + }, + { + "service": "google.cloud.datacatalog.v1.DataCatalog", + "method": "ListEntryGroups" + }, + { + "service": "google.cloud.datacatalog.v1.DataCatalog", + "method": "ListTags" + }, + { + "service": "google.cloud.datacatalog.v1.DataCatalog", + "method": "LookupEntry" + }, + { + "service": "google.cloud.datacatalog.v1.DataCatalog", + "method": "SearchCatalog" + }, + { + "service": "google.cloud.datacatalog.v1.DataCatalog", + "method": "TestIamPermisisons" + } + ], + "timeout": "60s", + "retryPolicy": { + "initialBackoff": "0.100s", + "maxBackoff": "60s", + "backoffMultiplier": 1.3, + "retryableStatusCodes": [ + "UNAVAILABLE" + ] + } + } + ] +} diff --git a/google/cloud/datacatalog/v1/datacatalog_v1.yaml b/google/cloud/datacatalog/v1/datacatalog_v1.yaml new file mode 100644 index 000000000..894e8d10c --- /dev/null +++ b/google/cloud/datacatalog/v1/datacatalog_v1.yaml @@ -0,0 +1,51 @@ +type: google.api.Service +config_version: 3 +name: datacatalog.googleapis.com +title: Google Cloud Data Catalog API + +apis: +- name: google.cloud.datacatalog.v1.DataCatalog + +documentation: + summary: |- + A fully managed and highly scalable data discovery and metadata management + service. + overview: |- + DataCatalog is a centralized and unified data catalog service for all your + Cloud resources, where users and systems can discover data, explore and + curate its semantics, understand how to act on it, and help govern its + usage. + rules: + - selector: google.iam.v1.IAMPolicy.GetIamPolicy + description: |- + Gets the access control policy for a resource. Returns an empty policy + if the resource exists and does not have a policy set. + + - selector: google.iam.v1.IAMPolicy.SetIamPolicy + description: |- + Sets the access control policy on the specified resource. Replaces + any existing policy. + + Can return Public Errors: NOT_FOUND, INVALID_ARGUMENT and + PERMISSION_DENIED + + - selector: google.iam.v1.IAMPolicy.TestIamPermissions + description: |- + Returns permissions that a caller has on the specified resource. If the + resource does not exist, this will return an empty set of + permissions, not a NOT_FOUND error. + + Note: This operation is designed to be used for building + permission-aware UIs and command-line tools, not for authorization + checking. This operation may "fail open" without warning. + +authentication: + rules: + - selector: 'google.cloud.datacatalog.v1.DataCatalog.*' + oauth: + canonical_scopes: |- + https://www.googleapis.com/auth/cloud-platform + - selector: 'google.iam.v1.IAMPolicy.*' + oauth: + canonical_scopes: |- + https://www.googleapis.com/auth/cloud-platform diff --git a/google/cloud/datacatalog/v1/gcs_fileset_spec.proto b/google/cloud/datacatalog/v1/gcs_fileset_spec.proto new file mode 100644 index 000000000..ec1992695 --- /dev/null +++ b/google/cloud/datacatalog/v1/gcs_fileset_spec.proto @@ -0,0 +1,72 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.cloud.datacatalog.v1; + +import "google/api/field_behavior.proto"; +import "google/cloud/datacatalog/v1/timestamps.proto"; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/cloud/datacatalog/v1;datacatalog"; +option java_multiple_files = true; +option java_package = "com.google.cloud.datacatalog.v1"; + +// Describes a Cloud Storage fileset entry. +message GcsFilesetSpec { + // Required. Patterns to identify a set of files in Google Cloud Storage. See [Cloud + // Storage documentation](/storage/docs/gsutil/addlhelp/WildcardNames) for + // more information. Note that bucket wildcards are currently not supported. + // + // Examples of valid file_patterns: + // + // * `gs://bucket_name/dir/*`: matches all files within `bucket_name/dir` + // directory. + // * `gs://bucket_name/dir/**`: matches all files in `bucket_name/dir` + // spanning all subdirectories. + // * `gs://bucket_name/file*`: matches files prefixed by `file` in + // `bucket_name` + // * `gs://bucket_name/??.txt`: matches files with two characters followed by + // `.txt` in `bucket_name` + // * `gs://bucket_name/[aeiou].txt`: matches files that contain a single + // vowel character followed by `.txt` in + // `bucket_name` + // * `gs://bucket_name/[a-m].txt`: matches files that contain `a`, `b`, ... + // or `m` followed by `.txt` in `bucket_name` + // * `gs://bucket_name/a/*/b`: matches all files in `bucket_name` that match + // `a/*/b` pattern, such as `a/c/b`, `a/d/b` + // * `gs://another_bucket/a.txt`: matches `gs://another_bucket/a.txt` + // + // You can combine wildcards to provide more powerful matches, for example: + // + // * `gs://bucket_name/[a-m]??.j*g` + repeated string file_patterns = 1 [(google.api.field_behavior) = REQUIRED]; + + // Output only. Sample files contained in this fileset, not all files + // contained in this fileset are represented here. + repeated GcsFileSpec sample_gcs_file_specs = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; +} + +// Specifications of a single file in Cloud Storage. +message GcsFileSpec { + // Required. The full file path. Example: `gs://bucket_name/a/b.txt`. + string file_path = 1 [(google.api.field_behavior) = REQUIRED]; + + // Output only. Timestamps about the Cloud Storage file. + SystemTimestamps gcs_timestamps = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. The size of the file, in bytes. + int64 size_bytes = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; +} diff --git a/google/cloud/datacatalog/v1/schema.proto b/google/cloud/datacatalog/v1/schema.proto new file mode 100644 index 000000000..d6daa5da4 --- /dev/null +++ b/google/cloud/datacatalog/v1/schema.proto @@ -0,0 +1,52 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.cloud.datacatalog.v1; + +import "google/api/field_behavior.proto"; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/cloud/datacatalog/v1;datacatalog"; +option java_multiple_files = true; +option java_package = "com.google.cloud.datacatalog.v1"; + +// Represents a schema (e.g. BigQuery, GoogleSQL, Avro schema). +message Schema { + // Required. Schema of columns. A maximum of 10,000 columns and sub-columns can be + // specified. + repeated ColumnSchema columns = 2 [(google.api.field_behavior) = REQUIRED]; +} + +// Representation of a column within a schema. Columns could be nested inside +// other columns. +message ColumnSchema { + // Required. Name of the column. + string column = 6 [(google.api.field_behavior) = REQUIRED]; + + // Required. Type of the column. + string type = 1 [(google.api.field_behavior) = REQUIRED]; + + // Optional. Description of the column. Default value is an empty string. + string description = 2 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. A column's mode indicates whether the values in this column are required, + // nullable, etc. Only `NULLABLE`, `REQUIRED` and `REPEATED` are supported. + // Default mode is `NULLABLE`. + string mode = 3 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Schema of sub-columns. A column can have zero or more sub-columns. + repeated ColumnSchema subcolumns = 7 [(google.api.field_behavior) = OPTIONAL]; +} diff --git a/google/cloud/datacatalog/v1/search.proto b/google/cloud/datacatalog/v1/search.proto new file mode 100644 index 000000000..2aac3b3a0 --- /dev/null +++ b/google/cloud/datacatalog/v1/search.proto @@ -0,0 +1,81 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.cloud.datacatalog.v1; + +import "google/api/field_behavior.proto"; +import "google/cloud/datacatalog/v1/common.proto"; +import "google/protobuf/timestamp.proto"; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/cloud/datacatalog/v1;datacatalog"; +option java_multiple_files = true; +option java_package = "com.google.cloud.datacatalog.v1"; + +// A result that appears in the response of a search request. Each result +// captures details of one entry that matches the search. +message SearchCatalogResult { + // Type of the search result. This field can be used to determine which Get + // method to call to fetch the full resource. + SearchResultType search_result_type = 1; + + // Sub-type of the search result. This is a dot-delimited description of the + // resource's full type, and is the same as the value callers would provide in + // the "type" search facet. Examples: `entry.table`, `entry.dataStream`, + // `tagTemplate`. + string search_result_subtype = 2; + + // The relative resource name of the resource in URL format. + // Examples: + // + // * `projects/{project_id}/locations/{location_id}/entryGroups/{entry_group_id}/entries/{entry_id}` + // * `projects/{project_id}/tagTemplates/{tag_template_id}` + string relative_resource_name = 3; + + // The full name of the cloud resource the entry belongs to. See: + // https://cloud.google.com/apis/design/resource_names#full_resource_name. + // Example: + // + // * `//bigquery.googleapis.com/projects/projectId/datasets/datasetId/tables/tableId` + string linked_resource = 4; + + // The source system of the entry. Only applicable when `search_result_type` + // is ENTRY. + oneof system { + // Output only. This field indicates the entry's source system that Data Catalog + // integrates with, such as BigQuery or Cloud Pub/Sub. + IntegratedSystem integrated_system = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // This field indicates the entry's source system that Data Catalog does not + // integrate with. + string user_specified_system = 9; + } +} + +// The different types of resources that can be returned in search. +enum SearchResultType { + // Default unknown type. + SEARCH_RESULT_TYPE_UNSPECIFIED = 0; + + // An [Entry][google.cloud.datacatalog.v1.Entry]. + ENTRY = 1; + + // A [TagTemplate][google.cloud.datacatalog.v1.TagTemplate]. + TAG_TEMPLATE = 2; + + // An [EntryGroup][google.cloud.datacatalog.v1.EntryGroup]. + ENTRY_GROUP = 3; +} diff --git a/google/cloud/datacatalog/v1/table_spec.proto b/google/cloud/datacatalog/v1/table_spec.proto new file mode 100644 index 000000000..40e1069b0 --- /dev/null +++ b/google/cloud/datacatalog/v1/table_spec.proto @@ -0,0 +1,98 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.cloud.datacatalog.v1; + +import "google/api/field_behavior.proto"; +import "google/api/resource.proto"; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/cloud/datacatalog/v1;datacatalog"; +option java_multiple_files = true; +option java_package = "com.google.cloud.datacatalog.v1"; + +// Describes a BigQuery table. +message BigQueryTableSpec { + // Output only. The table source type. + TableSourceType table_source_type = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. + oneof type_spec { + // Table view specification. This field should only be populated if + // `table_source_type` is `BIGQUERY_VIEW`. + ViewSpec view_spec = 2; + + // Spec of a BigQuery table. This field should only be populated if + // `table_source_type` is `BIGQUERY_TABLE`. + TableSpec table_spec = 3; + } +} + +// Table source type. +enum TableSourceType { + // Default unknown type. + TABLE_SOURCE_TYPE_UNSPECIFIED = 0; + + // Table view. + BIGQUERY_VIEW = 2; + + // BigQuery native table. + BIGQUERY_TABLE = 5; +} + +// Table view specification. +message ViewSpec { + // Output only. The query that defines the table view. + string view_query = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; +} + +// Normal BigQuery table spec. +message TableSpec { + // Output only. If the table is a dated shard, i.e., with name pattern `[prefix]YYYYMMDD`, + // `grouped_entry` is the Data Catalog resource name of the date sharded + // grouped entry, for example, + // `projects/{project_id}/locations/{location}/entrygroups/{entry_group_id}/entries/{entry_id}`. + // Otherwise, `grouped_entry` is empty. + string grouped_entry = 1 [ + (google.api.field_behavior) = OUTPUT_ONLY, + (google.api.resource_reference) = { + type: "datacatalog.googleapis.com/Entry" + } + ]; +} + +// Spec for a group of BigQuery tables with name pattern `[prefix]YYYYMMDD`. +// Context: +// https://cloud.google.com/bigquery/docs/partitioned-tables#partitioning_versus_sharding +message BigQueryDateShardedSpec { + // Output only. The Data Catalog resource name of the dataset entry the current table + // belongs to, for example, + // `projects/{project_id}/locations/{location}/entrygroups/{entry_group_id}/entries/{entry_id}`. + string dataset = 1 [ + (google.api.field_behavior) = OUTPUT_ONLY, + (google.api.resource_reference) = { + type: "datacatalog.googleapis.com/Entry" + } + ]; + + // Output only. The table name prefix of the shards. The name of any given shard is + // `[table_prefix]YYYYMMDD`, for example, for shard `MyTable20180101`, the + // `table_prefix` is `MyTable`. + string table_prefix = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. Total number of shards. + int64 shard_count = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; +} diff --git a/google/cloud/datacatalog/v1/tags.proto b/google/cloud/datacatalog/v1/tags.proto new file mode 100644 index 000000000..7fb833d96 --- /dev/null +++ b/google/cloud/datacatalog/v1/tags.proto @@ -0,0 +1,223 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.cloud.datacatalog.v1; + +import "google/api/field_behavior.proto"; +import "google/api/resource.proto"; +import "google/protobuf/timestamp.proto"; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/cloud/datacatalog/v1;datacatalog"; +option java_multiple_files = true; +option java_package = "com.google.cloud.datacatalog.v1"; + +// Tags are used to attach custom metadata to Data Catalog resources. Tags +// conform to the specifications within their tag template. +// +// See [Data Catalog IAM](/data-catalog/docs/concepts/iam) for information on +// the permissions needed to create or view tags. +message Tag { + option (google.api.resource) = { + type: "datacatalog.googleapis.com/Tag" + pattern: "projects/{project}/locations/{location}/entryGroups/{entry_group}/entries/{entry}/tags/{tag}" + }; + + // The resource name of the tag in URL format. Example: + // + // * projects/{project_id}/locations/{location}/entrygroups/{entry_group_id}/entries/{entry_id}/tags/{tag_id} + // + // where `tag_id` is a system-generated identifier. + // Note that this Tag may not actually be stored in the location in this name. + string name = 1; + + // Required. The resource name of the tag template that this tag uses. Example: + // + // * projects/{project_id}/locations/{location}/tagTemplates/{tag_template_id} + // + // This field cannot be modified after creation. + string template = 2 [(google.api.field_behavior) = REQUIRED]; + + // Output only. The display name of the tag template. + string template_display_name = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // The scope within the parent resource that this tag is attached to. If not + // provided, the tag is attached to the parent resource itself. + // Deleting the scope from the parent resource will delete all tags attached + // to that scope. These fields cannot be updated after creation. + oneof scope { + // Resources like Entry can have schemas associated with them. This scope + // allows users to attach tags to an individual column based on that schema. + // + // For attaching a tag to a nested column, use `.` to separate the column + // names. Example: + // + // * `outer_column.inner_column` + string column = 4; + } + + // Required. This maps the ID of a tag field to the value of and additional information + // about that field. Valid field IDs are defined by the tag's template. A tag + // must have at least 1 field and at most 500 fields. + map<string, TagField> fields = 3 [(google.api.field_behavior) = REQUIRED]; +} + +// Contains the value and supporting information for a field within +// a [Tag][google.cloud.datacatalog.v1.Tag]. +message TagField { + // Holds an enum value. + message EnumValue { + // The display name of the enum value. + string display_name = 1; + } + + // Output only. The display name of this field. + string display_name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Required. The value of this field. + oneof kind { + // Holds the value for a tag field with double type. + double double_value = 2; + + // Holds the value for a tag field with string type. + string string_value = 3; + + // Holds the value for a tag field with boolean type. + bool bool_value = 4; + + // Holds the value for a tag field with timestamp type. + google.protobuf.Timestamp timestamp_value = 5; + + // Holds the value for a tag field with enum type. This value must be + // one of the allowed values in the definition of this enum. + EnumValue enum_value = 6; + } + + // Output only. The order of this field with respect to other fields in this tag. It can be + // set in [Tag][google.cloud.datacatalog.v1.TagTemplateField.order]. For + // example, a higher value can indicate a more important field. The value can + // be negative. Multiple fields can have the same order, and field orders + // within a tag do not have to be sequential. + int32 order = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; +} + +// A tag template defines a tag, which can have one or more typed fields. +// The template is used to create and attach the tag to GCP resources. +// [Tag template roles](/iam/docs/understanding-roles#data-catalog-roles) +// provide permissions to create, edit, and use the template. See, for example, +// the [TagTemplate User](/data-catalog/docs/how-to/template-user) role, which +// includes permission to use the tag template to tag resources. +message TagTemplate { + option (google.api.resource) = { + type: "datacatalog.googleapis.com/TagTemplate" + pattern: "projects/{project}/locations/{location}/tagTemplates/{tag_template}" + }; + + // The resource name of the tag template in URL format. Example: + // + // * projects/{project_id}/locations/{location}/tagTemplates/{tag_template_id} + // + // Note that this TagTemplate and its child resources may not actually be + // stored in the location in this name. + string name = 1; + + // The display name for this template. Defaults to an empty string. + string display_name = 2; + + // Required. Map of tag template field IDs to the settings for the field. + // This map is an exhaustive list of the allowed fields. This map must contain + // at least one field and at most 500 fields. + // + // The keys to this map are tag template field IDs. Field IDs can contain + // letters (both uppercase and lowercase), numbers (0-9) and underscores (_). + // Field IDs must be at least 1 character long and at most + // 64 characters long. Field IDs must start with a letter or underscore. + map<string, TagTemplateField> fields = 3 [(google.api.field_behavior) = REQUIRED]; +} + +// The template for an individual field within a tag template. +message TagTemplateField { + option (google.api.resource) = { + type: "datacatalog.googleapis.com/TagTemplateField" + pattern: "projects/{project}/locations/{location}/tagTemplates/{tag_template}/fields/{field}" + }; + + // Output only. The resource name of the tag template field in URL format. Example: + // + // * projects/{project_id}/locations/{location}/tagTemplates/{tag_template}/fields/{field} + // + // Note that this TagTemplateField may not actually be stored in the location + // in this name. + string name = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // The display name for this field. Defaults to an empty string. + string display_name = 1; + + // Required. The type of value this tag field can contain. + FieldType type = 2 [(google.api.field_behavior) = REQUIRED]; + + // Whether this is a required field. Defaults to false. + bool is_required = 3; + + // The order of this field with respect to other fields in this tag + // template. For example, a higher value can indicate a more important field. + // The value can be negative. Multiple fields can have the same order, and + // field orders within a tag do not have to be sequential. + int32 order = 5; +} + +message FieldType { + message EnumType { + message EnumValue { + // Required. The display name of the enum value. Must not be an empty string. + string display_name = 1 [(google.api.field_behavior) = REQUIRED]; + } + + // Required on create; optional on update. The set of allowed values for + // this enum. This set must not be empty, the display names of the values in + // this set must not be empty and the display names of the values must be + // case-insensitively unique within this set. Currently, enum values can + // only be added to the list of allowed values. Deletion and renaming of + // enum values are not supported. Can have up to 500 allowed values. + repeated EnumValue allowed_values = 1; + } + + enum PrimitiveType { + // This is the default invalid value for a type. + PRIMITIVE_TYPE_UNSPECIFIED = 0; + + // A double precision number. + DOUBLE = 1; + + // An UTF-8 string. + STRING = 2; + + // A boolean value. + BOOL = 3; + + // A timestamp. + TIMESTAMP = 4; + } + + // Required. + oneof type_decl { + // Represents primitive types - string, bool etc. + PrimitiveType primitive_type = 1; + + // Represents an enum type. + EnumType enum_type = 2; + } +} diff --git a/google/cloud/datacatalog/v1/timestamps.proto b/google/cloud/datacatalog/v1/timestamps.proto new file mode 100644 index 000000000..ed4e3e103 --- /dev/null +++ b/google/cloud/datacatalog/v1/timestamps.proto @@ -0,0 +1,38 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.cloud.datacatalog.v1; + +import "google/api/field_behavior.proto"; +import "google/protobuf/timestamp.proto"; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/cloud/datacatalog/v1;datacatalog"; +option java_multiple_files = true; +option java_package = "com.google.cloud.datacatalog.v1"; + +// Timestamps about this resource according to a particular system. +message SystemTimestamps { + // The creation time of the resource within the given system. + google.protobuf.Timestamp create_time = 1; + + // The last-modified time of the resource within the given system. + google.protobuf.Timestamp update_time = 2; + + // Output only. The expiration time of the resource within the given system. + // Currently only apllicable to BigQuery resources. + google.protobuf.Timestamp expire_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; +} |