Skip to content

Commit

Permalink
docs: users can self enroll retail search feature on cloud console (v…
Browse files Browse the repository at this point in the history
…2beta)

docs: suggest search users not to send IP and use hashed user id (v2beta)
docs: deprecate request_id in ImportProductsRequest (v2beta)
docs: deprecate search dynamic_facet_spec and suggest to config on cloud console (v2beta)
docs: keep the API doc up-to-date with recent changes (v2beta)
feat: add new AddLocalInventories and RemoveLocalInventories APIs (v2beta)
feat: users cannot switch to empty default branch unless force override (v2beta)
feat: allow search users to skip validation for invalid boost specs (v2beta)
feat: support search personalization (v2beta)
feat: search returns applied control ids in the response (v2beta)

PiperOrigin-RevId: 438326512
  • Loading branch information
Google APIs authored and Copybara-Service committed Mar 30, 2022
1 parent 1821985 commit d6abf63
Show file tree
Hide file tree
Showing 20 changed files with 1,057 additions and 143 deletions.
27 changes: 26 additions & 1 deletion google/cloud/retail/v2beta/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,18 @@ proto_library(
"catalog_service.proto",
"common.proto",
"completion_service.proto",
"control.proto",
"control_service.proto",
"export_config.proto",
"import_config.proto",
"prediction_service.proto",
"product.proto",
"product_service.proto",
"promotion.proto",
"purge_config.proto",
"search_service.proto",
"serving_config.proto",
"serving_config_service.proto",
"user_event.proto",
"user_event_service.proto",
],
Expand Down Expand Up @@ -87,7 +92,9 @@ java_grpc_library(
java_gapic_library(
name = "retail_java_gapic",
srcs = [":retail_proto_with_info"],
gapic_yaml = "retail_gapic.yaml",
grpc_service_config = "retail_grpc_service_config.json",
service_yaml = "retail_v2beta.yaml",
test_deps = [
":retail_java_grpc",
],
Expand All @@ -102,9 +109,11 @@ java_gapic_test(
test_classes = [
"com.google.cloud.retail.v2beta.CatalogServiceClientTest",
"com.google.cloud.retail.v2beta.CompletionServiceClientTest",
"com.google.cloud.retail.v2beta.ControlServiceClientTest",
"com.google.cloud.retail.v2beta.PredictionServiceClientTest",
"com.google.cloud.retail.v2beta.ProductServiceClientTest",
"com.google.cloud.retail.v2beta.SearchServiceClientTest",
"com.google.cloud.retail.v2beta.ServingConfigServiceClientTest",
"com.google.cloud.retail.v2beta.UserEventServiceClientTest",
],
runtime_deps = [":retail_java_gapic_test"],
Expand Down Expand Up @@ -366,4 +375,20 @@ csharp_gapic_assembly_pkg(
##############################################################################
# C++
##############################################################################
# Put your C++ rules here
load(
"@com_google_googleapis_imports//:imports.bzl",
"cc_grpc_library",
"cc_proto_library",
)

cc_proto_library(
name = "retail_cc_proto",
deps = [":retail_proto"],
)

cc_grpc_library(
name = "retail_cc_grpc",
srcs = [":retail_proto"],
grpc_only = True,
deps = [":retail_cc_proto"],
)
286 changes: 285 additions & 1 deletion google/cloud/retail/v2beta/catalog.proto
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ syntax = "proto3";

package google.cloud.retail.v2beta;

import "google/api/annotations.proto";
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "google/cloud/retail/v2beta/common.proto";
Expand Down Expand Up @@ -85,6 +84,285 @@ message ProductLevelConfig {
string merchant_center_product_id_field = 2;
}

// Catalog level attribute config for an attribute. For example, if customers
// want to enable/disable facet for a specific attribute.
message CatalogAttribute {
// The type of an attribute.
enum AttributeType {
// The type of the attribute is unknown.
//
// Used when type cannot be derived from attribute that is not
// [in_use][google.cloud.retail.v2beta.CatalogAttribute.in_use].
UNKNOWN = 0;

// Textual attribute.
TEXTUAL = 1;

// Numerical attribute.
NUMERICAL = 2;
}

// The status of the indexable option of a catalog attribute.
enum IndexableOption {
// Value used when unset. Defaults to
// [INDEXABLE_ENABLED][google.cloud.retail.v2beta.CatalogAttribute.IndexableOption.INDEXABLE_ENABLED].
INDEXABLE_OPTION_UNSPECIFIED = 0;

// Indexable option enabled for an attribute.
INDEXABLE_ENABLED = 1;

// Indexable option disabled for an attribute.
INDEXABLE_DISABLED = 2;
}

// The status of the dynamic facetable option of a catalog attribute.
enum DynamicFacetableOption {
// Value used when unset. Defaults to
// [DYNAMIC_FACETABLE_ENABLED][google.cloud.retail.v2beta.CatalogAttribute.DynamicFacetableOption.DYNAMIC_FACETABLE_ENABLED].
DYNAMIC_FACETABLE_OPTION_UNSPECIFIED = 0;

// Dynamic facetable option enabled for an attribute.
DYNAMIC_FACETABLE_ENABLED = 1;

// Dynamic facetable option disabled for an attribute.
DYNAMIC_FACETABLE_DISABLED = 2;
}

// The status of the searchable option of a catalog attribute.
enum SearchableOption {
// Value used when unset. Defaults to
// [SEARCHABLE_DISABLED][google.cloud.retail.v2beta.CatalogAttribute.SearchableOption.SEARCHABLE_DISABLED].
SEARCHABLE_OPTION_UNSPECIFIED = 0;

// Searchable option enabled for an attribute.
SEARCHABLE_ENABLED = 1;

// Searchable option disabled for an attribute.
SEARCHABLE_DISABLED = 2;
}

// Required. Attribute name.
// For example: `color`, `brands`, `attributes.custom_attribute`, such as
// `attributes.xyz`.
string key = 1 [(google.api.field_behavior) = REQUIRED];

// Output only. Indicates whether this attribute has been used by any
// products. `True` if at least one
// [Product][google.cloud.retail.v2beta.Product] is using this attribute in
// [Product.attributes][google.cloud.retail.v2beta.Product.attributes].
// Otherwise, this field is `False`.
//
// [CatalogAttribute][google.cloud.retail.v2beta.CatalogAttribute] can be
// pre-loaded by using [AddCatalogAttribute][], [ImportCatalogAttributes][],
// or [UpdateAttributesConfig][] APIs. This field is `False` for pre-loaded
// [CatalogAttribute][google.cloud.retail.v2beta.CatalogAttribute]s.
//
// Only [CatalogAttribute][google.cloud.retail.v2beta.CatalogAttribute]s that
// are not in use by products can be deleted.
// [CatalogAttribute][google.cloud.retail.v2beta.CatalogAttribute]s that are
// in use by products cannot be deleted; however, their configuration
// properties will reset to default values upon removal request.
//
// After catalog changes, it takes about 10 minutes for this field to update.
bool in_use = 9 [(google.api.field_behavior) = OUTPUT_ONLY];

// Output only. The type of this attribute. This is derived from the attribute
// in [Product.attributes][google.cloud.retail.v2beta.Product.attributes].
AttributeType type = 10 [(google.api.field_behavior) = OUTPUT_ONLY];

// When
// [AttributesConfig.attribute_config_level][google.cloud.retail.v2beta.AttributesConfig.attribute_config_level]
// is CATALOG_LEVEL_ATTRIBUTE_CONFIG, if INDEXABLE_ENABLED attribute values
// are indexed so that it can be filtered, faceted, or boosted in
// [SearchService.Search][google.cloud.retail.v2beta.SearchService.Search].
IndexableOption indexable_option = 5;

// If DYNAMIC_FACETABLE_ENABLED, attribute values are available for dynamic
// facet. Could only be DYNAMIC_FACETABLE_DISABLED if
// [CatalogAttribute.indexable_option][google.cloud.retail.v2beta.CatalogAttribute.indexable_option]
// is INDEXABLE_DISABLED. Otherwise, an INVALID_ARGUMENT error is returned.
DynamicFacetableOption dynamic_facetable_option = 6;

// When
// [AttributesConfig.attribute_config_level][google.cloud.retail.v2beta.AttributesConfig.attribute_config_level]
// is CATALOG_LEVEL_ATTRIBUTE_CONFIG, if SEARCHABLE_ENABLED, attribute values
// are searchable by text queries in
// [SearchService.Search][google.cloud.retail.v2beta.SearchService.Search].
//
// If SEARCHABLE_ENABLED but attribute type is numerical, attribute values
// will not be searchable by text queries in
// [SearchService.Search][google.cloud.retail.v2beta.SearchService.Search], as
// there are no text values associated to numerical attributes.
SearchableOption searchable_option = 7;
}

// Catalog level attribute config.
message AttributesConfig {
option (google.api.resource) = {
type: "retail.googleapis.com/AttributesConfig"
pattern: "projects/{project}/locations/{location}/catalogs/{catalog}/attributesConfig"
};

// Required. Immutable. The fully qualified resource name of the attribute
// config. Format: "projects/*/locations/*/catalogs/*/attributesConfig"
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.field_behavior) = IMMUTABLE
];

// Enable attribute(s) config at catalog level.
// For example, indexable, dynamic_facetable, or searchable for each
// attribute.
//
// The key is catalog attribute's name.
// For example: `color`, `brands`, `attributes.custom_attribute`, such as
// `attributes.xyz`.
//
// The maximum number of catalog attributes allowed in a request is 1000.
map<string, CatalogAttribute> catalog_attributes = 2;

// Output only. The
// [AttributeConfigLevel][google.cloud.retail.v2beta.AttributeConfigLevel]
// used for this catalog.
AttributeConfigLevel attribute_config_level = 3
[(google.api.field_behavior) = OUTPUT_ONLY];
}

// Catalog level autocomplete config for customers to customize autocomplete
// feature's settings.
message CompletionConfig {
option (google.api.resource) = {
type: "retail.googleapis.com/CompletionConfig"
pattern: "projects/{project}/locations/{location}/catalogs/{catalog}/completionConfig"
};

// Required. Immutable. Fully qualified name
// projects/*/locations/*/catalogs/*/completionConfig
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.field_behavior) = IMMUTABLE
];

// Specifies the matching order for autocomplete suggestions, e.g., a query
// consisting of 'sh' with 'out-of-order' specified would suggest "women's
// shoes", whereas a query of 'red s' with 'exact-prefix' specified would
// suggest "red shoes". Currently supported values:
//
// * 'out-of-order'
// * 'exact-prefix'
//
// Default value: 'exact-prefix'.
string matching_order = 2;

// The maximum number of autocomplete suggestions returned per term. The
// maximum allowed max suggestions is 20. Default value is 20. If left unset
// or set to 0, then will fallback to default value.
int32 max_suggestions = 3;

// The minimum number of characters needed to be typed in order to get
// suggestions. Default value is 2. If left unset or set to 0, then will
// fallback to default value.
int32 min_prefix_length = 4;

// If set to true, the auto learning function is enabled. Auto learning uses
// user data to generate suggestions using ML techniques. Default value is
// false. Only after enabling auto learning can users use `cloud-retail`
// data in
// [CompleteQueryRequest][google.cloud.retail.v2beta.CompleteQueryRequest].
bool auto_learning = 11;

// Output only. The input config for the import of the source data that
// contains the autocomplete phrases uploaded by the customer.
CompletionDataInputConfig suggestions_input_config = 5
[(google.api.field_behavior) = OUTPUT_ONLY];

// Output only. Name of the LRO corresponding to the latest suggestion terms
// list import.
//
// Can use [GetOperation][google.longrunning.Operations.GetOperation] API to
// retrieve the latest state of the Long Running Operation.
string last_suggestions_import_operation = 6
[(google.api.field_behavior) = OUTPUT_ONLY];

// Output only. The input config for the import of the source data that
// contains the / autocomplete denylist phrases uploaded by the customer.
CompletionDataInputConfig denylist_input_config = 7
[(google.api.field_behavior) = OUTPUT_ONLY];

// Output only. LRO corresponding to the latest denylist import.
//
// Can use [GetOperation][google.longrunning.Operations.GetOperation] API to
// retrieve the latest state of the Long Running Operation.
string last_denylist_import_operation = 8
[(google.api.field_behavior) = OUTPUT_ONLY];

// Output only. The input config for the import of the source data that
// contains the autocomplete allowlist phrases uploaded by the customer.
CompletionDataInputConfig allowlist_input_config = 9
[(google.api.field_behavior) = OUTPUT_ONLY];

// Output only. LRO corresponding to the latest allowlist import.
//
// Can use [GetOperation][google.longrunning.Operations.GetOperation] API to
// retrieve the latest state of the Long Running Operation.
string last_allowlist_import_operation = 10
[(google.api.field_behavior) = OUTPUT_ONLY];
}

// Represents a link between a Merchant Center account and a branch.
// Once a link is established, products from the linked merchant center account
// will be streamed to the linked branch.
message MerchantCenterLink {
// Required. The linked [Merchant center account
// id](https://developers.google.com/shopping-content/guides/accountstatuses).
// The account must be a standalone account or a sub-account of a MCA.
int64 merchant_center_account_id = 1 [(google.api.field_behavior) = REQUIRED];

// The branch id (e.g. 0/1/2) within this catalog that products from
// merchant_center_account_id are streamed to. When updating this field, an
// empty value will use the currently configured default branch. However,
// changing the default branch later on won't change the linked branch here.
//
// A single branch id can only have one linked merchant center account id.
string branch_id = 2;

// String representing the destination to import for, all if left empty.
// List of possible values can be found here.
// [https://support.google.com/merchants/answer/7501026]
// List of allowed string values:
// "Shopping_ads", "Buy_on_google_listings", "Display_ads", "Local_inventory
// _ads", "Free_listings", "Free_local_listings"
// NOTE: The string values are case sensitive.
repeated string destinations = 3;

// Region code of offers to accept. 2-letter Uppercase ISO 3166-1 alpha-2
// code. List of values can be found
// [here](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry)
// under the `region` tag. If left blank no region filtering will be
// performed.
//
// Example value: `US`.
string region_code = 4;

// Language of the title/description and other string attributes. Use language
// tags defined by [BCP 47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt).
// ISO 639-1.
//
// This specifies the language of offers in Merchant Center that will be
// accepted. If empty no language filtering will be performed.
//
// Example value: `en`.
string language_code = 5;
}

// Configures Merchant Center linking.
// Links contained in the config will be used to sync data from a Merchant
// Center account to a Cloud Retail branch.
message MerchantCenterLinkingConfig {
// Links between Merchant Center accounts and branches.
repeated MerchantCenterLink links = 1;
}

// The catalog configuration.
message Catalog {
option (google.api.resource) = {
Expand All @@ -110,4 +388,10 @@ message Catalog {
// Required. The product level configuration.
ProductLevelConfig product_level_config = 4
[(google.api.field_behavior) = REQUIRED];

// The Merchant Center linking configuration.
// Once a link is added, the data stream from Merchant Center to Cloud Retail
// will be enabled automatically. The requester must have access to the
// merchant center account in order to make changes to this field.
MerchantCenterLinkingConfig merchant_center_linking_config = 6;
}

0 comments on commit d6abf63

Please sign in to comment.