mirror of
https://github.com/googleapis/googleapis.git
synced 2026-08-17 13:06:47 +02:00
512 lines
22 KiB
Protocol Buffer
512 lines
22 KiB
Protocol Buffer
// Copyright 2025 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.discoveryengine.v1beta;
|
|
|
|
import "google/api/field_behavior.proto";
|
|
import "google/api/resource.proto";
|
|
import "google/cloud/discoveryengine/v1beta/common.proto";
|
|
import "google/protobuf/duration.proto";
|
|
import "google/protobuf/timestamp.proto";
|
|
|
|
option csharp_namespace = "Google.Cloud.DiscoveryEngine.V1Beta";
|
|
option go_package = "cloud.google.com/go/discoveryengine/apiv1beta/discoveryenginepb;discoveryenginepb";
|
|
option java_multiple_files = true;
|
|
option java_outer_classname = "UserEventProto";
|
|
option java_package = "com.google.cloud.discoveryengine.v1beta";
|
|
option objc_class_prefix = "DISCOVERYENGINE";
|
|
option php_namespace = "Google\\Cloud\\DiscoveryEngine\\V1beta";
|
|
option ruby_package = "Google::Cloud::DiscoveryEngine::V1beta";
|
|
|
|
// UserEvent captures all metadata information Discovery Engine API needs to
|
|
// know about how end users interact with your website.
|
|
message UserEvent {
|
|
// Required. User event type. Allowed values are:
|
|
//
|
|
// Generic values:
|
|
//
|
|
// * `search`: Search for Documents.
|
|
// * `view-item`: Detailed page view of a Document.
|
|
// * `view-item-list`: View of a panel or ordered list of Documents.
|
|
// * `view-home-page`: View of the home page.
|
|
// * `view-category-page`: View of a category page, e.g. Home > Men > Jeans
|
|
// * `add-feedback`: Add a user feedback.
|
|
//
|
|
// Retail-related values:
|
|
//
|
|
// * `add-to-cart`: Add an item(s) to cart, e.g. in Retail online shopping
|
|
// * `purchase`: Purchase an item(s)
|
|
//
|
|
// Media-related values:
|
|
//
|
|
// * `media-play`: Start/resume watching a video, playing a song, etc.
|
|
// * `media-complete`: Finished or stopped midway through a video, song, etc.
|
|
string event_type = 1 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Required. A unique identifier for tracking visitors.
|
|
//
|
|
// For example, this could be implemented with an HTTP cookie, which should be
|
|
// able to uniquely identify a visitor on a single device. This unique
|
|
// identifier should not change if the visitor log in/out of the website.
|
|
//
|
|
// Do not set the field to the same fixed ID for different users. This mixes
|
|
// the event history of those users together, which results in degraded model
|
|
// quality.
|
|
//
|
|
// The field must be a UTF-8 encoded string with a length limit of 128
|
|
// characters. Otherwise, an `INVALID_ARGUMENT` error is returned.
|
|
//
|
|
// The field should not contain PII or user-data. We recommend to use Google
|
|
// Analytics [Client
|
|
// ID](https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#clientId)
|
|
// for this field.
|
|
string user_pseudo_id = 2 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// The [Engine][google.cloud.discoveryengine.v1beta.Engine] resource name, in
|
|
// the form of
|
|
// `projects/{project}/locations/{location}/collections/{collection_id}/engines/{engine_id}`.
|
|
//
|
|
// Optional. Only required for
|
|
// [Engine][google.cloud.discoveryengine.v1beta.Engine] produced user events.
|
|
// For example, user events from blended search.
|
|
string engine = 19 [(google.api.resource_reference) = {
|
|
type: "discoveryengine.googleapis.com/Engine"
|
|
}];
|
|
|
|
// The [DataStore][google.cloud.discoveryengine.v1beta.DataStore] resource
|
|
// full name, of the form
|
|
// `projects/{project}/locations/{location}/collections/{collection_id}/dataStores/{data_store_id}`.
|
|
//
|
|
// Optional. Only required for user events whose data store can't by
|
|
// determined by
|
|
// [UserEvent.engine][google.cloud.discoveryengine.v1beta.UserEvent.engine] or
|
|
// [UserEvent.documents][google.cloud.discoveryengine.v1beta.UserEvent.documents].
|
|
// If data store is set in the parent of write/import/collect user event
|
|
// requests, this field can be omitted.
|
|
string data_store = 20 [(google.api.resource_reference) = {
|
|
type: "discoveryengine.googleapis.com/DataStore"
|
|
}];
|
|
|
|
// Only required for
|
|
// [UserEventService.ImportUserEvents][google.cloud.discoveryengine.v1beta.UserEventService.ImportUserEvents]
|
|
// method. Timestamp of when the user event happened.
|
|
google.protobuf.Timestamp event_time = 3;
|
|
|
|
// Information about the end user.
|
|
UserInfo user_info = 4;
|
|
|
|
// Should set to true if the request is made directly from the end user, in
|
|
// which case the
|
|
// [UserEvent.user_info.user_agent][google.cloud.discoveryengine.v1beta.UserInfo.user_agent]
|
|
// can be populated from the HTTP request.
|
|
//
|
|
// This flag should be set only if the API request is made directly from the
|
|
// end user such as a mobile app (and not if a gateway or a server is
|
|
// processing and pushing the user events).
|
|
//
|
|
// This should not be set when using the JavaScript tag in
|
|
// [UserEventService.CollectUserEvent][google.cloud.discoveryengine.v1beta.UserEventService.CollectUserEvent].
|
|
bool direct_user_request = 5;
|
|
|
|
// A unique identifier for tracking a visitor session with a length limit of
|
|
// 128 bytes. A session is an aggregation of an end user behavior in a time
|
|
// span.
|
|
//
|
|
// A general guideline to populate the session_id:
|
|
//
|
|
// 1. If user has no activity for 30 min, a new session_id should be assigned.
|
|
// 2. The session_id should be unique across users, suggest use uuid or add
|
|
// [UserEvent.user_pseudo_id][google.cloud.discoveryengine.v1beta.UserEvent.user_pseudo_id]
|
|
// as prefix.
|
|
string session_id = 6;
|
|
|
|
// Page metadata such as categories and other critical information for certain
|
|
// event types such as `view-category-page`.
|
|
PageInfo page_info = 7;
|
|
|
|
// Token to attribute an API response to user action(s) to trigger the event.
|
|
//
|
|
// Highly recommended for user events that are the result of
|
|
// [RecommendationService.Recommend][google.cloud.discoveryengine.v1beta.RecommendationService.Recommend].
|
|
// This field enables accurate attribution of recommendation model
|
|
// performance.
|
|
//
|
|
// The value must be one of:
|
|
//
|
|
// * [RecommendResponse.attribution_token][google.cloud.discoveryengine.v1beta.RecommendResponse.attribution_token] for events that are the result of
|
|
// [RecommendationService.Recommend][google.cloud.discoveryengine.v1beta.RecommendationService.Recommend].
|
|
// * [SearchResponse.attribution_token][google.cloud.discoveryengine.v1beta.SearchResponse.attribution_token] for events that are the result of
|
|
// [SearchService.Search][google.cloud.discoveryengine.v1beta.SearchService.Search].
|
|
//
|
|
// This token enables us to accurately attribute page view or conversion
|
|
// completion back to the event and the particular predict response containing
|
|
// this clicked/purchased product. If user clicks on product K in the
|
|
// recommendation results, pass
|
|
// [RecommendResponse.attribution_token][google.cloud.discoveryengine.v1beta.RecommendResponse.attribution_token]
|
|
// as a URL parameter to product K's page. When recording events on product
|
|
// K's page, log the
|
|
// [RecommendResponse.attribution_token][google.cloud.discoveryengine.v1beta.RecommendResponse.attribution_token]
|
|
// to this field.
|
|
string attribution_token = 8;
|
|
|
|
// The filter syntax consists of an expression language for constructing a
|
|
// predicate from one or more fields of the documents being filtered.
|
|
//
|
|
// One example is for `search` events, the associated
|
|
// [SearchRequest][google.cloud.discoveryengine.v1beta.SearchRequest] may
|
|
// contain a filter expression in
|
|
// [SearchRequest.filter][google.cloud.discoveryengine.v1beta.SearchRequest.filter]
|
|
// conforming to https://google.aip.dev/160#filtering.
|
|
//
|
|
// Similarly, for `view-item-list` events that are generated from a
|
|
// [RecommendRequest][google.cloud.discoveryengine.v1beta.RecommendRequest],
|
|
// this field may be populated directly from
|
|
// [RecommendRequest.filter][google.cloud.discoveryengine.v1beta.RecommendRequest.filter]
|
|
// conforming to https://google.aip.dev/160#filtering.
|
|
//
|
|
// The value must be a UTF-8 encoded string with a length limit of 1,000
|
|
// characters. Otherwise, an `INVALID_ARGUMENT` error is returned.
|
|
string filter = 9;
|
|
|
|
// List of [Document][google.cloud.discoveryengine.v1beta.Document]s
|
|
// associated with this user event.
|
|
//
|
|
// This field is optional except for the following event types:
|
|
//
|
|
// * `view-item`
|
|
// * `add-to-cart`
|
|
// * `purchase`
|
|
// * `media-play`
|
|
// * `media-complete`
|
|
//
|
|
// In a `search` event, this field represents the documents returned to the
|
|
// end user on the current page (the end user may have not finished browsing
|
|
// the whole page yet). When a new page is returned to the end user, after
|
|
// pagination/filtering/ordering even for the same query, a new `search` event
|
|
// with different
|
|
// [UserEvent.documents][google.cloud.discoveryengine.v1beta.UserEvent.documents]
|
|
// is desired.
|
|
repeated DocumentInfo documents = 10;
|
|
|
|
// Panel metadata associated with this user event.
|
|
PanelInfo panel = 11;
|
|
|
|
// [SearchService.Search][google.cloud.discoveryengine.v1beta.SearchService.Search]
|
|
// details related to the event.
|
|
//
|
|
// This field should be set for `search` event.
|
|
SearchInfo search_info = 12;
|
|
|
|
// [CompletionService.CompleteQuery][google.cloud.discoveryengine.v1beta.CompletionService.CompleteQuery]
|
|
// details related to the event.
|
|
//
|
|
// This field should be set for `search` event when autocomplete function is
|
|
// enabled and the user clicks a suggestion for search.
|
|
CompletionInfo completion_info = 13;
|
|
|
|
// The transaction metadata (if any) associated with this user event.
|
|
TransactionInfo transaction_info = 14;
|
|
|
|
// A list of identifiers for the independent experiment groups this user event
|
|
// belongs to. This is used to distinguish between user events associated with
|
|
// different experiment setups.
|
|
repeated string tag_ids = 15;
|
|
|
|
// The promotion IDs if this is an event associated with promotions.
|
|
// Currently, this field is restricted to at most one ID.
|
|
repeated string promotion_ids = 16;
|
|
|
|
// Extra user event features to include in the recommendation model.
|
|
// These attributes must NOT contain data that needs to be parsed or processed
|
|
// further, e.g. JSON or other encodings.
|
|
//
|
|
// If you provide custom attributes for ingested user events, also include
|
|
// them in the user events that you associate with prediction requests. Custom
|
|
// attribute formatting must be consistent between imported events and events
|
|
// provided with prediction requests. This lets the Discovery Engine API use
|
|
// those custom attributes when training models and serving predictions, which
|
|
// helps improve recommendation quality.
|
|
//
|
|
// This field needs to pass all below criteria, otherwise an
|
|
// `INVALID_ARGUMENT` error is returned:
|
|
//
|
|
// * The key must be a UTF-8 encoded string with a length limit of 5,000
|
|
// characters.
|
|
// * For text attributes, at most 400 values are allowed. Empty values are not
|
|
// allowed. Each value must be a UTF-8 encoded string with a length limit of
|
|
// 256 characters.
|
|
// * For number attributes, at most 400 values are allowed.
|
|
//
|
|
// For product recommendations, an example of extra user information is
|
|
// `traffic_channel`, which is how a user arrives at the site. Users can
|
|
// arrive
|
|
// at the site by coming to the site directly, coming through Google
|
|
// search, or in other ways.
|
|
map<string, CustomAttribute> attributes = 17;
|
|
|
|
// Media-specific info.
|
|
MediaInfo media_info = 18;
|
|
|
|
// Optional. List of panels associated with this event.
|
|
// Used for page-level impression data.
|
|
repeated PanelInfo panels = 22 [(google.api.field_behavior) = OPTIONAL];
|
|
}
|
|
|
|
// Detailed page information.
|
|
message PageInfo {
|
|
// A unique ID of a web page view.
|
|
//
|
|
// This should be kept the same for all user events triggered from the same
|
|
// pageview. For example, an item detail page view could trigger multiple
|
|
// events as the user is browsing the page. The `pageview_id` property should
|
|
// be kept the same for all these events so that they can be grouped together
|
|
// properly.
|
|
//
|
|
// When using the client side event reporting with JavaScript pixel and Google
|
|
// Tag Manager, this value is filled in automatically.
|
|
string pageview_id = 1;
|
|
|
|
// The most specific category associated with a category page.
|
|
//
|
|
// To represent full path of category, use '>' sign to separate different
|
|
// hierarchies. If '>' is part of the category name, replace it with
|
|
// other character(s).
|
|
//
|
|
// Category pages include special pages such as sales or promotions. For
|
|
// instance, a special sale page may have the category hierarchy:
|
|
// `"pageCategory" : "Sales > 2017 Black Friday Deals"`.
|
|
//
|
|
// Required for `view-category-page` events. Other event types should not set
|
|
// this field. Otherwise, an `INVALID_ARGUMENT` error is returned.
|
|
string page_category = 2;
|
|
|
|
// Complete URL (window.location.href) of the user's current page.
|
|
//
|
|
// When using the client side event reporting with JavaScript pixel and Google
|
|
// Tag Manager, this value is filled in automatically. Maximum length 5,000
|
|
// characters.
|
|
string uri = 3;
|
|
|
|
// The referrer URL of the current page.
|
|
//
|
|
// When using the client side event reporting with JavaScript pixel and Google
|
|
// Tag Manager, this value is filled in automatically. However, some browser
|
|
// privacy restrictions may cause this field to be empty.
|
|
string referrer_uri = 4;
|
|
}
|
|
|
|
// Detailed search information.
|
|
message SearchInfo {
|
|
// The user's search query.
|
|
//
|
|
// See
|
|
// [SearchRequest.query][google.cloud.discoveryengine.v1beta.SearchRequest.query]
|
|
// for definition.
|
|
//
|
|
// The value must be a UTF-8 encoded string with a length limit of 5,000
|
|
// characters. Otherwise, an `INVALID_ARGUMENT` error is returned.
|
|
//
|
|
// At least one of
|
|
// [search_query][google.cloud.discoveryengine.v1beta.SearchInfo.search_query]
|
|
// or
|
|
// [PageInfo.page_category][google.cloud.discoveryengine.v1beta.PageInfo.page_category]
|
|
// is required for `search` events. Other event types should not set this
|
|
// field. Otherwise, an `INVALID_ARGUMENT` error is returned.
|
|
string search_query = 1;
|
|
|
|
// The order in which products are returned, if applicable.
|
|
//
|
|
// See
|
|
// [SearchRequest.order_by][google.cloud.discoveryengine.v1beta.SearchRequest.order_by]
|
|
// for definition and syntax.
|
|
//
|
|
// The value must be a UTF-8 encoded string with a length limit of 1,000
|
|
// characters. Otherwise, an `INVALID_ARGUMENT` error is returned.
|
|
//
|
|
// This can only be set for `search` events. Other event types should not set
|
|
// this field. Otherwise, an `INVALID_ARGUMENT` error is returned.
|
|
string order_by = 2;
|
|
|
|
// An integer that specifies the current offset for pagination (the 0-indexed
|
|
// starting location, amongst the products deemed by the API as relevant).
|
|
//
|
|
// See
|
|
// [SearchRequest.offset][google.cloud.discoveryengine.v1beta.SearchRequest.offset]
|
|
// for definition.
|
|
//
|
|
// If this field is negative, an `INVALID_ARGUMENT` is returned.
|
|
//
|
|
// This can only be set for `search` events. Other event types should not set
|
|
// this field. Otherwise, an `INVALID_ARGUMENT` error is returned.
|
|
optional int32 offset = 3;
|
|
}
|
|
|
|
// Detailed completion information including completion attribution token and
|
|
// clicked completion info.
|
|
message CompletionInfo {
|
|
// End user selected
|
|
// [CompleteQueryResponse.QuerySuggestion.suggestion][google.cloud.discoveryengine.v1beta.CompleteQueryResponse.QuerySuggestion.suggestion].
|
|
string selected_suggestion = 1;
|
|
|
|
// End user selected
|
|
// [CompleteQueryResponse.QuerySuggestion.suggestion][google.cloud.discoveryengine.v1beta.CompleteQueryResponse.QuerySuggestion.suggestion]
|
|
// position, starting from 0.
|
|
int32 selected_position = 2;
|
|
}
|
|
|
|
// A transaction represents the entire purchase transaction.
|
|
message TransactionInfo {
|
|
// Required. Total non-zero value associated with the transaction. This value
|
|
// may include shipping, tax, or other adjustments to the total value that you
|
|
// want to include.
|
|
optional float value = 1 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Required. Currency code. Use three-character ISO-4217 code.
|
|
string currency = 2 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// The transaction ID with a length limit of 128 characters.
|
|
string transaction_id = 3;
|
|
|
|
// All the taxes associated with the transaction.
|
|
optional float tax = 4;
|
|
|
|
// All the costs associated with the products. These can be manufacturing
|
|
// costs, shipping expenses not borne by the end user, or any other costs,
|
|
// such that:
|
|
//
|
|
// * Profit =
|
|
// [value][google.cloud.discoveryengine.v1beta.TransactionInfo.value] -
|
|
// [tax][google.cloud.discoveryengine.v1beta.TransactionInfo.tax] -
|
|
// [cost][google.cloud.discoveryengine.v1beta.TransactionInfo.cost]
|
|
optional float cost = 5;
|
|
|
|
// The total discount(s) value applied to this transaction.
|
|
// This figure should be excluded from
|
|
// [TransactionInfo.value][google.cloud.discoveryengine.v1beta.TransactionInfo.value]
|
|
//
|
|
// For example, if a user paid
|
|
// [TransactionInfo.value][google.cloud.discoveryengine.v1beta.TransactionInfo.value]
|
|
// amount, then nominal (pre-discount) value of the transaction is the sum of
|
|
// [TransactionInfo.value][google.cloud.discoveryengine.v1beta.TransactionInfo.value]
|
|
// and
|
|
// [TransactionInfo.discount_value][google.cloud.discoveryengine.v1beta.TransactionInfo.discount_value]
|
|
//
|
|
// This means that profit is calculated the same way, regardless of the
|
|
// discount value, and that
|
|
// [TransactionInfo.discount_value][google.cloud.discoveryengine.v1beta.TransactionInfo.discount_value]
|
|
// can be larger than
|
|
// [TransactionInfo.value][google.cloud.discoveryengine.v1beta.TransactionInfo.value]:
|
|
//
|
|
// * Profit =
|
|
// [value][google.cloud.discoveryengine.v1beta.TransactionInfo.value] -
|
|
// [tax][google.cloud.discoveryengine.v1beta.TransactionInfo.tax] -
|
|
// [cost][google.cloud.discoveryengine.v1beta.TransactionInfo.cost]
|
|
optional float discount_value = 6;
|
|
}
|
|
|
|
// Detailed document information associated with a user event.
|
|
message DocumentInfo {
|
|
// A required descriptor of the associated
|
|
// [Document][google.cloud.discoveryengine.v1beta.Document].
|
|
//
|
|
// * If [id][google.cloud.discoveryengine.v1beta.DocumentInfo.id] is
|
|
// specified, then the default values for
|
|
// `{location}`, `{collection_id}`, `{data_store_id}`, and `{branch_id}` are
|
|
// used when annotating with the stored Document.
|
|
//
|
|
// * If [name][google.cloud.discoveryengine.v1beta.DocumentInfo.name] is
|
|
// specified, then the provided values (default values allowed) for
|
|
// `{location}`, `{collection_id}`, `{data_store_id}`, and
|
|
// `{branch_id}` are used when annotating with the stored Document.
|
|
oneof document_descriptor {
|
|
// The [Document][google.cloud.discoveryengine.v1beta.Document] resource ID.
|
|
string id = 1;
|
|
|
|
// The [Document][google.cloud.discoveryengine.v1beta.Document] resource
|
|
// full name, of the form:
|
|
// `projects/{project}/locations/{location}/collections/{collection_id}/dataStores/{data_store_id}/branches/{branch_id}/documents/{document_id}`
|
|
string name = 2 [(google.api.resource_reference) = {
|
|
type: "discoveryengine.googleapis.com/Document"
|
|
}];
|
|
|
|
// The [Document][google.cloud.discoveryengine.v1beta.Document] URI - only
|
|
// allowed for website data stores.
|
|
string uri = 6;
|
|
}
|
|
|
|
// Quantity of the Document associated with the user event. Defaults to 1.
|
|
//
|
|
// For example, this field is 2 if two quantities of the same Document
|
|
// are involved in a `add-to-cart` event.
|
|
//
|
|
// Required for events of the following event types:
|
|
//
|
|
// * `add-to-cart`
|
|
// * `purchase`
|
|
optional int32 quantity = 3;
|
|
|
|
// The promotion IDs associated with this Document.
|
|
// Currently, this field is restricted to at most one ID.
|
|
repeated string promotion_ids = 4;
|
|
|
|
// Output only. Whether the referenced Document can be found in the data
|
|
// store.
|
|
bool joined = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
|
|
}
|
|
|
|
// Detailed panel information associated with a user event.
|
|
message PanelInfo {
|
|
// Required. The panel ID.
|
|
string panel_id = 2 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// The display name of the panel.
|
|
string display_name = 3;
|
|
|
|
// The ordered position of the panel, if shown to the user with other panels.
|
|
// If set, then
|
|
// [total_panels][google.cloud.discoveryengine.v1beta.PanelInfo.total_panels]
|
|
// must also be set.
|
|
optional int32 panel_position = 4;
|
|
|
|
// The total number of panels, including this one, shown to the user.
|
|
// Must be set if
|
|
// [panel_position][google.cloud.discoveryengine.v1beta.PanelInfo.panel_position]
|
|
// is set.
|
|
optional int32 total_panels = 5;
|
|
|
|
// Optional. The document IDs associated with this panel.
|
|
repeated DocumentInfo documents = 6 [(google.api.field_behavior) = OPTIONAL];
|
|
}
|
|
|
|
// Media-specific user event information.
|
|
message MediaInfo {
|
|
// The media progress time in seconds, if applicable.
|
|
// For example, if the end user has finished 90 seconds of a playback video,
|
|
// then
|
|
// [MediaInfo.media_progress_duration.seconds][google.protobuf.Duration.seconds]
|
|
// should be set to 90.
|
|
google.protobuf.Duration media_progress_duration = 1;
|
|
|
|
// Media progress should be computed using only the
|
|
// [media_progress_duration][google.cloud.discoveryengine.v1beta.MediaInfo.media_progress_duration]
|
|
// relative to the media total length.
|
|
//
|
|
// This value must be between `[0, 1.0]` inclusive.
|
|
//
|
|
// If this is not a playback or the progress cannot be computed (e.g. ongoing
|
|
// livestream), this field should be unset.
|
|
optional float media_progress_percentage = 2;
|
|
}
|