Add ListEntryGroups method, add http bindings to support entry group tagging, and update some comments.

PiperOrigin-RevId: 293666452
This commit is contained in:
Google APIs 2020-02-06 13:43:12 -08:00 committed by Copybara-Service
parent 0275e38a4c
commit 2e23b8fbc4
1 changed files with 177 additions and 80 deletions

View File

@ -42,7 +42,8 @@ option java_package = "com.google.cloud.datacatalog.v1beta1";
// their data.
service DataCatalog {
option (google.api.default_host) = "datacatalog.googleapis.com";
option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
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.
@ -69,12 +70,22 @@ service DataCatalog {
// Creates an EntryGroup.
//
// 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).
// 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: "/v1beta1/{parent=projects/*/locations/*}/entryGroups"
@ -106,20 +117,30 @@ service DataCatalog {
}
// Deletes an EntryGroup. Only entry groups that do not contain entries can be
// deleted. The user should enable the Data Catalog API in the project
// 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) {
rpc DeleteEntryGroup(DeleteEntryGroupRequest)
returns (google.protobuf.Empty) {
option (google.api.http) = {
delete: "/v1beta1/{name=projects/*/locations/*/entryGroups/*}"
};
option (google.api.method_signature) = "name";
}
// Lists entry groups.
rpc ListEntryGroups(ListEntryGroupsRequest)
returns (ListEntryGroupsResponse) {
option (google.api.http) = {
get: "/v1beta1/{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.
//
// The user should enable the Data Catalog API in the project identified by
// 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).
//
@ -133,7 +154,7 @@ service DataCatalog {
}
// Updates an existing entry.
// The user should enable the Data Catalog API in the project identified by
// 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) {
@ -148,7 +169,7 @@ service DataCatalog {
// Deletes an existing entry. Only entries created through
// [CreateEntry][google.cloud.datacatalog.v1beta1.DataCatalog.CreateEntry]
// method can be deleted.
// The user should enable the Data Catalog API in the project identified by
// 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) {
@ -192,7 +213,8 @@ service DataCatalog {
post: "/v1beta1/{parent=projects/*/locations/*}/tagTemplates"
body: "tag_template"
};
option (google.api.method_signature) = "parent,tag_template_id,tag_template";
option (google.api.method_signature) =
"parent,tag_template_id,tag_template";
}
// Gets a tag template.
@ -206,7 +228,7 @@ service DataCatalog {
// 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.
// The user should enable the Data Catalog API in the project identified by
// 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) {
@ -219,10 +241,11 @@ service DataCatalog {
}
// Deletes a tag template and all tags using the template.
// The user should enable the Data Catalog API in the project identified by
// 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) {
rpc DeleteTagTemplate(DeleteTagTemplateRequest)
returns (google.protobuf.Empty) {
option (google.api.http) = {
delete: "/v1beta1/{name=projects/*/locations/*/tagTemplates/*}"
};
@ -234,32 +257,37 @@ service DataCatalog {
// [Data Catalog Resource
// Project](/data-catalog/docs/concepts/resource-project) for more
// information).
rpc CreateTagTemplateField(CreateTagTemplateFieldRequest) returns (TagTemplateField) {
rpc CreateTagTemplateField(CreateTagTemplateFieldRequest)
returns (TagTemplateField) {
option (google.api.http) = {
post: "/v1beta1/{parent=projects/*/locations/*/tagTemplates/*}/fields"
body: "tag_template_field"
};
option (google.api.method_signature) = "parent,tag_template_field_id,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. The user should enable the Data Catalog API in the project
// 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) {
rpc UpdateTagTemplateField(UpdateTagTemplateFieldRequest)
returns (TagTemplateField) {
option (google.api.http) = {
patch: "/v1beta1/{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";
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) {
rpc RenameTagTemplateField(RenameTagTemplateFieldRequest)
returns (TagTemplateField) {
option (google.api.http) = {
post: "/v1beta1/{name=projects/*/locations/*/tagTemplates/*/fields/*}:rename"
body: "*"
@ -268,10 +296,11 @@ service DataCatalog {
}
// Deletes a field in a tag template and all uses of that field.
// The user should enable the Data Catalog API in the project identified by
// 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) {
rpc DeleteTagTemplateField(DeleteTagTemplateFieldRequest)
returns (google.protobuf.Empty) {
option (google.api.http) = {
delete: "/v1beta1/{name=projects/*/locations/*/tagTemplates/*/fields/*}"
};
@ -289,6 +318,10 @@ service DataCatalog {
option (google.api.http) = {
post: "/v1beta1/{parent=projects/*/locations/*/entryGroups/*/entries/*}/tags"
body: "tag"
additional_bindings {
post: "/v1beta1/{parent=projects/*/locations/*/entryGroups/*}/tags"
body: "tag"
}
};
option (google.api.method_signature) = "parent,tag";
}
@ -298,6 +331,10 @@ service DataCatalog {
option (google.api.http) = {
patch: "/v1beta1/{tag.name=projects/*/locations/*/entryGroups/*/entries/*/tags/*}"
body: "tag"
additional_bindings {
patch: "/v1beta1/{tag.name=projects/*/locations/*/entryGroups/*/tags/*}"
body: "tag"
}
};
option (google.api.method_signature) = "tag";
option (google.api.method_signature) = "tag,update_mask";
@ -307,6 +344,9 @@ service DataCatalog {
rpc DeleteTag(DeleteTagRequest) returns (google.protobuf.Empty) {
option (google.api.http) = {
delete: "/v1beta1/{name=projects/*/locations/*/entryGroups/*/entries/*/tags/*}"
additional_bindings {
delete: "/v1beta1/{name=projects/*/locations/*/entryGroups/*/tags/*}"
}
};
option (google.api.method_signature) = "name";
}
@ -315,6 +355,9 @@ service DataCatalog {
rpc ListTags(ListTagsRequest) returns (ListTagsResponse) {
option (google.api.http) = {
get: "/v1beta1/{parent=projects/*/locations/*/entryGroups/*/entries/*}/tags"
additional_bindings {
get: "/v1beta1/{parent=projects/*/locations/*/entryGroups/*}/tags"
}
};
option (google.api.method_signature) = "parent";
}
@ -334,7 +377,8 @@ service DataCatalog {
// 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) {
rpc SetIamPolicy(google.iam.v1.SetIamPolicyRequest)
returns (google.iam.v1.Policy) {
option (google.api.http) = {
post: "/v1beta1/{resource=projects/*/locations/*/tagTemplates/*}:setIamPolicy"
body: "*"
@ -362,7 +406,8 @@ service DataCatalog {
// 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) {
rpc GetIamPolicy(google.iam.v1.GetIamPolicyRequest)
returns (google.iam.v1.Policy) {
option (google.api.http) = {
post: "/v1beta1/{resource=projects/*/locations/*/tagTemplates/*}:getIamPolicy"
body: "*"
@ -391,7 +436,8 @@ service DataCatalog {
//
// 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) {
rpc TestIamPermissions(google.iam.v1.TestIamPermissionsRequest)
returns (google.iam.v1.TestIamPermissionsResponse) {
option (google.api.http) = {
post: "/v1beta1/{resource=projects/*/locations/*/tagTemplates/*}:testIamPermissions"
body: "*"
@ -437,7 +483,8 @@ message SearchCatalogRequest {
// Required. The scope of this search request.
Scope scope = 6 [(google.api.field_behavior) = REQUIRED];
// Required. The query string in search query syntax. The query must be non-empty.
// 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:
//
@ -455,8 +502,8 @@ message SearchCatalogRequest {
int32 page_size = 2;
// Optional. Pagination token returned in an earlier
// [SearchCatalogResponse.next_page_token][google.cloud.datacatalog.v1beta1.SearchCatalogResponse.next_page_token], which
// indicates that this is a continuation of a prior
// [SearchCatalogResponse.next_page_token][google.cloud.datacatalog.v1beta1.SearchCatalogResponse.next_page_token],
// which indicates that this is a continuation of a prior
// [SearchCatalogRequest][google.cloud.datacatalog.v1beta1.DataCatalog.SearchCatalog]
// call, and that the system should return the next page of data. If empty,
// the first page is returned.
@ -551,6 +598,40 @@ message DeleteEntryGroupRequest {
bool force = 2 [(google.api.field_behavior) = OPTIONAL];
}
// Request message for
// [ListEntryGroups][google.cloud.datacatalog.v1beta1.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.v1beta1.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.v1beta1.DataCatalog.CreateEntry].
message CreateEntryRequest {
@ -592,6 +673,14 @@ message UpdateEntryRequest {
// * `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;
}
@ -615,11 +704,6 @@ message GetEntryRequest {
// Required. The name of the entry. Example:
//
// * projects/{project_id}/locations/{location}/entryGroups/{entry_group_id}/entries/{entry_id}
//
// Entry groups are logical groupings of entries. Currently, users cannot
// create/modify entry groups. They are created by Data Catalog; they include
// `@bigquery` for all BigQuery entries, and `@pubsub` for all Cloud Pub/Sub
// entries.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
@ -663,9 +747,10 @@ message LookupEntryRequest {
// 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.
// Clients can use the `linked_resource` field in the Entry resource to refer to
// the original resource ID of the source system.
// 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
@ -683,8 +768,8 @@ message Entry {
// 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"
}];
type: "datacatalog.googleapis.com/EntryGroup"
}];
// The resource this metadata entry refers to.
//
@ -721,9 +806,10 @@ message Entry {
// 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];
// 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
@ -761,11 +847,12 @@ message Entry {
// Schema of the entry. An entry might not have any schema attached to it.
Schema schema = 5;
// Output only. 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 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. 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
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// EntryGroup Metadata.
@ -794,8 +881,10 @@ message EntryGroup {
// 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];
// 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
@ -822,6 +911,29 @@ message CreateTagTemplateRequest {
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.
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.v1beta1.DataCatalog.GetTagTemplate].
message GetTagTemplateRequest {
@ -852,29 +964,6 @@ message UpdateTagTemplateRequest {
google.protobuf.FieldMask update_mask = 2;
}
// 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.
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
// [DeleteTagTemplate][google.cloud.datacatalog.v1beta1.DataCatalog.DeleteTagTemplate].
message DeleteTagTemplateRequest {
@ -897,8 +986,8 @@ message DeleteTagTemplateRequest {
// Request message for
// [CreateTag][google.cloud.datacatalog.v1beta1.DataCatalog.CreateTag].
message CreateTagRequest {
// Required. The name of the resource to attach this tag to. Tags can be attached to
// Entries. Example:
// 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}
//
@ -906,9 +995,7 @@ message CreateTagRequest {
// the location in this name.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "datacatalog.googleapis.com/Tag"
}
(google.api.resource_reference) = { type: "datacatalog.googleapis.com/Tag" }
];
// Required. The tag to create.
@ -965,7 +1052,8 @@ message CreateTagTemplateFieldRequest {
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];
TagTemplateField tag_template_field = 3
[(google.api.field_behavior) = REQUIRED];
}
// Request message for
@ -982,7 +1070,8 @@ message UpdateTagTemplateFieldRequest {
];
// Required. The template to update.
TagTemplateField tag_template_field = 2 [(google.api.field_behavior) = REQUIRED];
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:
@ -998,7 +1087,8 @@ message UpdateTagTemplateFieldRequest {
// 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];
google.protobuf.FieldMask update_mask = 3
[(google.api.field_behavior) = OPTIONAL];
}
// Request message for
@ -1014,7 +1104,8 @@ message RenameTagTemplateFieldRequest {
}
];
// Required. The new ID of this tag template field. For example, `my_new_field`.
// 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];
}
@ -1041,7 +1132,13 @@ message DeleteTagTemplateFieldRequest {
// [ListTags][google.cloud.datacatalog.v1beta1.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.v1beta1.Entry].
// resource could be an [Entry][google.cloud.datacatalog.v1beta1.Entry] or an
// [EntryGroup][google.cloud.datacatalog.v1beta1.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) = {