| // Copyright 2021 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. |
| |
| // Code generated by protoc-gen-go. DO NOT EDIT. |
| // versions: |
| // protoc-gen-go v1.26.0 |
| // protoc v3.12.2 |
| // source: google/cloud/retail/v2/product_service.proto |
| |
| package retailpb |
| |
| import ( |
| context "context" |
| reflect "reflect" |
| sync "sync" |
| |
| empty "github.com/golang/protobuf/ptypes/empty" |
| timestamp "github.com/golang/protobuf/ptypes/timestamp" |
| _ "google.golang.org/genproto/googleapis/api/annotations" |
| longrunning "google.golang.org/genproto/googleapis/longrunning" |
| field_mask "google.golang.org/genproto/protobuf/field_mask" |
| grpc "google.golang.org/grpc" |
| codes "google.golang.org/grpc/codes" |
| status "google.golang.org/grpc/status" |
| protoreflect "google.golang.org/protobuf/reflect/protoreflect" |
| protoimpl "google.golang.org/protobuf/runtime/protoimpl" |
| ) |
| |
| const ( |
| // Verify that this generated code is sufficiently up-to-date. |
| _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) |
| // Verify that runtime/protoimpl is sufficiently up-to-date. |
| _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) |
| ) |
| |
| // Request message for |
| // [ProductService.CreateProduct][google.cloud.retail.v2.ProductService.CreateProduct] |
| // method. |
| type CreateProductRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. The parent catalog resource name, such as |
| // `projects/*/locations/global/catalogs/default_catalog/branches/default_branch`. |
| Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` |
| // Required. The [Product][google.cloud.retail.v2.Product] to create. |
| Product *Product `protobuf:"bytes,2,opt,name=product,proto3" json:"product,omitempty"` |
| // Required. The ID to use for the [Product][google.cloud.retail.v2.Product], |
| // which will become the final component of the |
| // [Product.name][google.cloud.retail.v2.Product.name]. |
| // |
| // If the caller does not have permission to create the |
| // [Product][google.cloud.retail.v2.Product], regardless of whether or not it |
| // exists, a PERMISSION_DENIED error is returned. |
| // |
| // This field must be unique among all |
| // [Product][google.cloud.retail.v2.Product]s with the same |
| // [parent][google.cloud.retail.v2.CreateProductRequest.parent]. Otherwise, an |
| // ALREADY_EXISTS error is returned. |
| // |
| // This field must be a UTF-8 encoded string with a length limit of 128 |
| // characters. Otherwise, an INVALID_ARGUMENT error is returned. |
| ProductId string `protobuf:"bytes,3,opt,name=product_id,json=productId,proto3" json:"product_id,omitempty"` |
| } |
| |
| func (x *CreateProductRequest) Reset() { |
| *x = CreateProductRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[0] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *CreateProductRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*CreateProductRequest) ProtoMessage() {} |
| |
| func (x *CreateProductRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[0] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use CreateProductRequest.ProtoReflect.Descriptor instead. |
| func (*CreateProductRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2_product_service_proto_rawDescGZIP(), []int{0} |
| } |
| |
| func (x *CreateProductRequest) GetParent() string { |
| if x != nil { |
| return x.Parent |
| } |
| return "" |
| } |
| |
| func (x *CreateProductRequest) GetProduct() *Product { |
| if x != nil { |
| return x.Product |
| } |
| return nil |
| } |
| |
| func (x *CreateProductRequest) GetProductId() string { |
| if x != nil { |
| return x.ProductId |
| } |
| return "" |
| } |
| |
| // Request message for |
| // [ProductService.GetProduct][google.cloud.retail.v2.ProductService.GetProduct] |
| // method. |
| type GetProductRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. Full resource name of [Product][google.cloud.retail.v2.Product], |
| // such as |
| // `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/some_product_id`. |
| // |
| // If the caller does not have permission to access the |
| // [Product][google.cloud.retail.v2.Product], regardless of whether or not it |
| // exists, a PERMISSION_DENIED error is returned. |
| // |
| // If the requested [Product][google.cloud.retail.v2.Product] does not exist, |
| // a NOT_FOUND error is returned. |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| } |
| |
| func (x *GetProductRequest) Reset() { |
| *x = GetProductRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[1] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *GetProductRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*GetProductRequest) ProtoMessage() {} |
| |
| func (x *GetProductRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[1] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use GetProductRequest.ProtoReflect.Descriptor instead. |
| func (*GetProductRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2_product_service_proto_rawDescGZIP(), []int{1} |
| } |
| |
| func (x *GetProductRequest) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| // Request message for |
| // [ProductService.UpdateProduct][google.cloud.retail.v2.ProductService.UpdateProduct] |
| // method. |
| type UpdateProductRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. The product to update/create. |
| // |
| // If the caller does not have permission to update the |
| // [Product][google.cloud.retail.v2.Product], regardless of whether or not it |
| // exists, a PERMISSION_DENIED error is returned. |
| // |
| // If the [Product][google.cloud.retail.v2.Product] to update does not exist |
| // and |
| // [allow_missing][google.cloud.retail.v2.UpdateProductRequest.allow_missing] |
| // is not set, a NOT_FOUND error is returned. |
| Product *Product `protobuf:"bytes,1,opt,name=product,proto3" json:"product,omitempty"` |
| // Indicates which fields in the provided |
| // [Product][google.cloud.retail.v2.Product] to update. The immutable and |
| // output only fields are NOT supported. If not set, all supported fields (the |
| // fields that are neither immutable nor output only) are updated. |
| // |
| // If an unsupported or unknown field is provided, an INVALID_ARGUMENT error |
| // is returned. |
| // |
| // The attribute key can be updated by setting the mask path as |
| // "attributes.${key_name}". If a key name is present in the mask but not in |
| // the patching product from the request, this key will be deleted after the |
| // update. |
| UpdateMask *field_mask.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` |
| // If set to true, and the [Product][google.cloud.retail.v2.Product] is not |
| // found, a new [Product][google.cloud.retail.v2.Product] will be created. In |
| // this situation, `update_mask` is ignored. |
| AllowMissing bool `protobuf:"varint,3,opt,name=allow_missing,json=allowMissing,proto3" json:"allow_missing,omitempty"` |
| } |
| |
| func (x *UpdateProductRequest) Reset() { |
| *x = UpdateProductRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[2] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *UpdateProductRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*UpdateProductRequest) ProtoMessage() {} |
| |
| func (x *UpdateProductRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[2] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use UpdateProductRequest.ProtoReflect.Descriptor instead. |
| func (*UpdateProductRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2_product_service_proto_rawDescGZIP(), []int{2} |
| } |
| |
| func (x *UpdateProductRequest) GetProduct() *Product { |
| if x != nil { |
| return x.Product |
| } |
| return nil |
| } |
| |
| func (x *UpdateProductRequest) GetUpdateMask() *field_mask.FieldMask { |
| if x != nil { |
| return x.UpdateMask |
| } |
| return nil |
| } |
| |
| func (x *UpdateProductRequest) GetAllowMissing() bool { |
| if x != nil { |
| return x.AllowMissing |
| } |
| return false |
| } |
| |
| // Request message for |
| // [ProductService.DeleteProduct][google.cloud.retail.v2.ProductService.DeleteProduct] |
| // method. |
| type DeleteProductRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. Full resource name of [Product][google.cloud.retail.v2.Product], |
| // such as |
| // `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/some_product_id`. |
| // |
| // If the caller does not have permission to delete the |
| // [Product][google.cloud.retail.v2.Product], regardless of whether or not it |
| // exists, a PERMISSION_DENIED error is returned. |
| // |
| // If the [Product][google.cloud.retail.v2.Product] to delete does not exist, |
| // a NOT_FOUND error is returned. |
| // |
| // The [Product][google.cloud.retail.v2.Product] to delete can neither be a |
| // [Product.Type.COLLECTION][google.cloud.retail.v2.Product.Type.COLLECTION] |
| // [Product][google.cloud.retail.v2.Product] member nor a |
| // [Product.Type.PRIMARY][google.cloud.retail.v2.Product.Type.PRIMARY] |
| // [Product][google.cloud.retail.v2.Product] with more than one |
| // [variants][google.cloud.retail.v2.Product.Type.VARIANT]. Otherwise, an |
| // INVALID_ARGUMENT error is returned. |
| // |
| // All inventory information for the named |
| // [Product][google.cloud.retail.v2.Product] will be deleted. |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| } |
| |
| func (x *DeleteProductRequest) Reset() { |
| *x = DeleteProductRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[3] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *DeleteProductRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*DeleteProductRequest) ProtoMessage() {} |
| |
| func (x *DeleteProductRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[3] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use DeleteProductRequest.ProtoReflect.Descriptor instead. |
| func (*DeleteProductRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2_product_service_proto_rawDescGZIP(), []int{3} |
| } |
| |
| func (x *DeleteProductRequest) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| // Request message for |
| // [ProductService.ListProducts][google.cloud.retail.v2.ProductService.ListProducts] |
| // method. |
| type ListProductsRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. The parent branch resource name, such as |
| // `projects/*/locations/global/catalogs/default_catalog/branches/0`. Use |
| // `default_branch` as the branch ID, to list products under the default |
| // branch. |
| // |
| // If the caller does not have permission to list |
| // [Product][google.cloud.retail.v2.Product]s under this branch, regardless of |
| // whether or not this branch exists, a PERMISSION_DENIED error is returned. |
| Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` |
| // Maximum number of [Product][google.cloud.retail.v2.Product]s to return. If |
| // unspecified, defaults to 100. The maximum allowed value is 1000. Values |
| // above 1000 will be coerced to 1000. |
| // |
| // If this field is negative, an INVALID_ARGUMENT error is returned. |
| PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` |
| // A page token |
| // [ListProductsResponse.next_page_token][google.cloud.retail.v2.ListProductsResponse.next_page_token], |
| // received from a previous |
| // [ProductService.ListProducts][google.cloud.retail.v2.ProductService.ListProducts] |
| // call. Provide this to retrieve the subsequent page. |
| // |
| // When paginating, all other parameters provided to |
| // [ProductService.ListProducts][google.cloud.retail.v2.ProductService.ListProducts] |
| // must match the call that provided the page token. Otherwise, an |
| // INVALID_ARGUMENT error is returned. |
| PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` |
| // A filter to apply on the list results. Supported features: |
| // |
| // * List all the products under the parent branch if |
| // [filter][google.cloud.retail.v2.ListProductsRequest.filter] is unset. |
| // * List [Product.Type.VARIANT][google.cloud.retail.v2.Product.Type.VARIANT] |
| // [Product][google.cloud.retail.v2.Product]s sharing the same |
| // |
| // [Product.Type.PRIMARY][google.cloud.retail.v2.Product.Type.PRIMARY] |
| // [Product][google.cloud.retail.v2.Product]. For example: |
| // `primary_product_id = "some_product_id"` |
| // |
| // * List [Product][google.cloud.retail.v2.Product]s bundled in a |
| // [Product.Type.COLLECTION][google.cloud.retail.v2.Product.Type.COLLECTION] |
| // [Product][google.cloud.retail.v2.Product]. |
| // |
| // For example: |
| // `collection_product_id = "some_product_id"` |
| // |
| // * List [Product][google.cloud.retail.v2.Product]s with a partibular type. |
| // For example: |
| // |
| // `type = "PRIMARY"` |
| // `type = "VARIANT"` |
| // `type = "COLLECTION"` |
| // |
| // If the field is unrecognizable, an INVALID_ARGUMENT error is returned. |
| // |
| // If the specified |
| // [Product.Type.PRIMARY][google.cloud.retail.v2.Product.Type.PRIMARY] |
| // [Product][google.cloud.retail.v2.Product] or |
| // [Product.Type.COLLECTION][google.cloud.retail.v2.Product.Type.COLLECTION] |
| // [Product][google.cloud.retail.v2.Product] does not exist, a NOT_FOUND error |
| // is returned. |
| Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` |
| // The fields of [Product][google.cloud.retail.v2.Product] to return in the |
| // responses. If not set or empty, the following fields are returned: |
| // |
| // * [Product.name][google.cloud.retail.v2.Product.name] |
| // * [Product.id][google.cloud.retail.v2.Product.id] |
| // * [Product.title][google.cloud.retail.v2.Product.title] |
| // * [Product.uri][google.cloud.retail.v2.Product.uri] |
| // * [Product.images][google.cloud.retail.v2.Product.images] |
| // * [Product.price_info][google.cloud.retail.v2.Product.price_info] |
| // * [Product.brands][google.cloud.retail.v2.Product.brands] |
| // |
| // If "*" is provided, all fields are returned. |
| // [Product.name][google.cloud.retail.v2.Product.name] is always returned no |
| // matter what mask is set. |
| // |
| // If an unsupported or unknown field is provided, an INVALID_ARGUMENT error |
| // is returned. |
| ReadMask *field_mask.FieldMask `protobuf:"bytes,5,opt,name=read_mask,json=readMask,proto3" json:"read_mask,omitempty"` |
| } |
| |
| func (x *ListProductsRequest) Reset() { |
| *x = ListProductsRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[4] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ListProductsRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ListProductsRequest) ProtoMessage() {} |
| |
| func (x *ListProductsRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[4] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ListProductsRequest.ProtoReflect.Descriptor instead. |
| func (*ListProductsRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2_product_service_proto_rawDescGZIP(), []int{4} |
| } |
| |
| func (x *ListProductsRequest) GetParent() string { |
| if x != nil { |
| return x.Parent |
| } |
| return "" |
| } |
| |
| func (x *ListProductsRequest) GetPageSize() int32 { |
| if x != nil { |
| return x.PageSize |
| } |
| return 0 |
| } |
| |
| func (x *ListProductsRequest) GetPageToken() string { |
| if x != nil { |
| return x.PageToken |
| } |
| return "" |
| } |
| |
| func (x *ListProductsRequest) GetFilter() string { |
| if x != nil { |
| return x.Filter |
| } |
| return "" |
| } |
| |
| func (x *ListProductsRequest) GetReadMask() *field_mask.FieldMask { |
| if x != nil { |
| return x.ReadMask |
| } |
| return nil |
| } |
| |
| // Response message for |
| // [ProductService.ListProducts][google.cloud.retail.v2.ProductService.ListProducts] |
| // method. |
| type ListProductsResponse struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The [Product][google.cloud.retail.v2.Product]s. |
| Products []*Product `protobuf:"bytes,1,rep,name=products,proto3" json:"products,omitempty"` |
| // A token that can be sent as |
| // [ListProductsRequest.page_token][google.cloud.retail.v2.ListProductsRequest.page_token] |
| // to retrieve the next page. If this field is omitted, there are no |
| // subsequent pages. |
| NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` |
| } |
| |
| func (x *ListProductsResponse) Reset() { |
| *x = ListProductsResponse{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[5] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ListProductsResponse) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ListProductsResponse) ProtoMessage() {} |
| |
| func (x *ListProductsResponse) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[5] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ListProductsResponse.ProtoReflect.Descriptor instead. |
| func (*ListProductsResponse) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2_product_service_proto_rawDescGZIP(), []int{5} |
| } |
| |
| func (x *ListProductsResponse) GetProducts() []*Product { |
| if x != nil { |
| return x.Products |
| } |
| return nil |
| } |
| |
| func (x *ListProductsResponse) GetNextPageToken() string { |
| if x != nil { |
| return x.NextPageToken |
| } |
| return "" |
| } |
| |
| // Request message for |
| // [ProductService.SetInventory][google.cloud.retail.v2.ProductService.SetInventory] |
| // method. |
| type SetInventoryRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. The inventory information to update. The allowable fields to |
| // update are: |
| // |
| // * [Product.price_info][google.cloud.retail.v2.Product.price_info] |
| // * [Product.availability][google.cloud.retail.v2.Product.availability] |
| // * [Product.available_quantity][google.cloud.retail.v2.Product.available_quantity] |
| // * [Product.fulfillment_info][google.cloud.retail.v2.Product.fulfillment_info] |
| // The updated inventory fields must be specified in |
| // [SetInventoryRequest.set_mask][google.cloud.retail.v2.SetInventoryRequest.set_mask]. |
| // |
| // If |
| // [SetInventoryRequest.inventory.name][google.cloud.retail.v2.Product.name] |
| // is empty or invalid, an INVALID_ARGUMENT error is returned. |
| // |
| // If the caller does not have permission to update the |
| // [Product][google.cloud.retail.v2.Product] named in |
| // [Product.name][google.cloud.retail.v2.Product.name], regardless of whether |
| // or not it exists, a PERMISSION_DENIED error is returned. |
| // |
| // If the [Product][google.cloud.retail.v2.Product] to update does not have |
| // existing inventory information, the provided inventory information will be |
| // inserted. |
| // |
| // If the [Product][google.cloud.retail.v2.Product] to update has existing |
| // inventory information, the provided inventory information will be merged |
| // while respecting the last update time for each inventory field, using the |
| // provided or default value for |
| // [SetInventoryRequest.set_time][google.cloud.retail.v2.SetInventoryRequest.set_time]. |
| // |
| // The caller can replace place IDs for a subset of fulfillment types in the |
| // following ways: |
| // |
| // * Adds "fulfillment_info" in |
| // [SetInventoryRequest.set_mask][google.cloud.retail.v2.SetInventoryRequest.set_mask] |
| // * Specifies only the desired fulfillment types and corresponding place IDs |
| // to update in |
| // [SetInventoryRequest.inventory.fulfillment_info][google.cloud.retail.v2.Product.fulfillment_info] |
| // |
| // The caller can clear all place IDs from a subset of fulfillment types in |
| // the following ways: |
| // |
| // * Adds "fulfillment_info" in |
| // [SetInventoryRequest.set_mask][google.cloud.retail.v2.SetInventoryRequest.set_mask] |
| // * Specifies only the desired fulfillment types to clear in |
| // [SetInventoryRequest.inventory.fulfillment_info][google.cloud.retail.v2.Product.fulfillment_info] |
| // * Checks that only the desired fulfillment info types have empty |
| // [SetInventoryRequest.inventory.fulfillment_info.place_ids][google.cloud.retail.v2.FulfillmentInfo.place_ids] |
| // |
| // The last update time is recorded for the following inventory fields: |
| // * [Product.price_info][google.cloud.retail.v2.Product.price_info] |
| // * [Product.availability][google.cloud.retail.v2.Product.availability] |
| // * [Product.available_quantity][google.cloud.retail.v2.Product.available_quantity] |
| // * [Product.fulfillment_info][google.cloud.retail.v2.Product.fulfillment_info] |
| // |
| // If a full overwrite of inventory information while ignoring timestamps is |
| // needed, |
| // [ProductService.UpdateProduct][google.cloud.retail.v2.ProductService.UpdateProduct] |
| // should be invoked instead. |
| Inventory *Product `protobuf:"bytes,1,opt,name=inventory,proto3" json:"inventory,omitempty"` |
| // Indicates which inventory fields in the provided |
| // [Product][google.cloud.retail.v2.Product] to update. |
| // |
| // At least one field must be provided. |
| // |
| // If an unsupported or unknown field is provided, an INVALID_ARGUMENT error |
| // is returned and the entire update will be ignored. |
| SetMask *field_mask.FieldMask `protobuf:"bytes,2,opt,name=set_mask,json=setMask,proto3" json:"set_mask,omitempty"` |
| // The time when the request is issued, used to prevent |
| // out-of-order updates on inventory fields with the last update time |
| // recorded. If not provided, the internal system time will be used. |
| SetTime *timestamp.Timestamp `protobuf:"bytes,3,opt,name=set_time,json=setTime,proto3" json:"set_time,omitempty"` |
| // If set to true, and the [Product][google.cloud.retail.v2.Product] with name |
| // [Product.name][google.cloud.retail.v2.Product.name] is not found, the |
| // inventory update will still be processed and retained for at most 1 day |
| // until the [Product][google.cloud.retail.v2.Product] is created. If set to |
| // false, a NOT_FOUND error is returned if the |
| // [Product][google.cloud.retail.v2.Product] is not found. |
| AllowMissing bool `protobuf:"varint,4,opt,name=allow_missing,json=allowMissing,proto3" json:"allow_missing,omitempty"` |
| } |
| |
| func (x *SetInventoryRequest) Reset() { |
| *x = SetInventoryRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[6] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *SetInventoryRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*SetInventoryRequest) ProtoMessage() {} |
| |
| func (x *SetInventoryRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[6] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use SetInventoryRequest.ProtoReflect.Descriptor instead. |
| func (*SetInventoryRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2_product_service_proto_rawDescGZIP(), []int{6} |
| } |
| |
| func (x *SetInventoryRequest) GetInventory() *Product { |
| if x != nil { |
| return x.Inventory |
| } |
| return nil |
| } |
| |
| func (x *SetInventoryRequest) GetSetMask() *field_mask.FieldMask { |
| if x != nil { |
| return x.SetMask |
| } |
| return nil |
| } |
| |
| func (x *SetInventoryRequest) GetSetTime() *timestamp.Timestamp { |
| if x != nil { |
| return x.SetTime |
| } |
| return nil |
| } |
| |
| func (x *SetInventoryRequest) GetAllowMissing() bool { |
| if x != nil { |
| return x.AllowMissing |
| } |
| return false |
| } |
| |
| // Metadata related to the progress of the SetInventory operation. |
| // Currently empty because there is no meaningful metadata populated from the |
| // [ProductService.SetInventory][google.cloud.retail.v2.ProductService.SetInventory] |
| // method. |
| type SetInventoryMetadata struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| } |
| |
| func (x *SetInventoryMetadata) Reset() { |
| *x = SetInventoryMetadata{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[7] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *SetInventoryMetadata) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*SetInventoryMetadata) ProtoMessage() {} |
| |
| func (x *SetInventoryMetadata) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[7] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use SetInventoryMetadata.ProtoReflect.Descriptor instead. |
| func (*SetInventoryMetadata) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2_product_service_proto_rawDescGZIP(), []int{7} |
| } |
| |
| // Response of the SetInventoryRequest. Currently empty because |
| // there is no meaningful response populated from the |
| // [ProductService.SetInventory][google.cloud.retail.v2.ProductService.SetInventory] |
| // method. |
| type SetInventoryResponse struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| } |
| |
| func (x *SetInventoryResponse) Reset() { |
| *x = SetInventoryResponse{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[8] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *SetInventoryResponse) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*SetInventoryResponse) ProtoMessage() {} |
| |
| func (x *SetInventoryResponse) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[8] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use SetInventoryResponse.ProtoReflect.Descriptor instead. |
| func (*SetInventoryResponse) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2_product_service_proto_rawDescGZIP(), []int{8} |
| } |
| |
| // Request message for |
| // [ProductService.AddFulfillmentPlaces][google.cloud.retail.v2.ProductService.AddFulfillmentPlaces] |
| // method. |
| type AddFulfillmentPlacesRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. Full resource name of [Product][google.cloud.retail.v2.Product], |
| // such as |
| // `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/some_product_id`. |
| // |
| // If the caller does not have permission to access the |
| // [Product][google.cloud.retail.v2.Product], regardless of whether or not it |
| // exists, a PERMISSION_DENIED error is returned. |
| Product string `protobuf:"bytes,1,opt,name=product,proto3" json:"product,omitempty"` |
| // Required. The fulfillment type, including commonly used types (such as |
| // pickup in store and same day delivery), and custom types. |
| // |
| // Supported values: |
| // |
| // * "pickup-in-store" |
| // * "ship-to-store" |
| // * "same-day-delivery" |
| // * "next-day-delivery" |
| // * "custom-type-1" |
| // * "custom-type-2" |
| // * "custom-type-3" |
| // * "custom-type-4" |
| // * "custom-type-5" |
| // |
| // If this field is set to an invalid value other than these, an |
| // INVALID_ARGUMENT error is returned. |
| // |
| // This field directly corresponds to |
| // [Product.fulfillment_info.type][google.cloud.retail.v2.FulfillmentInfo.type]. |
| Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` |
| // Required. The IDs for this |
| // [type][google.cloud.retail.v2.AddFulfillmentPlacesRequest.type], such as |
| // the store IDs for "pickup-in-store" or the region IDs for |
| // "same-day-delivery" to be added for this |
| // [type][google.cloud.retail.v2.AddFulfillmentPlacesRequest.type]. Duplicate |
| // IDs will be automatically ignored. |
| // |
| // At least 1 value is required, and a maximum of 2000 values are allowed. |
| // Each value must be a string with a length limit of 10 characters, matching |
| // the pattern `[a-zA-Z0-9_-]+`, such as "store1" or "REGION-2". Otherwise, an |
| // INVALID_ARGUMENT error is returned. |
| // |
| // If the total number of place IDs exceeds 2000 for this |
| // [type][google.cloud.retail.v2.AddFulfillmentPlacesRequest.type] after |
| // adding, then the update will be rejected. |
| PlaceIds []string `protobuf:"bytes,3,rep,name=place_ids,json=placeIds,proto3" json:"place_ids,omitempty"` |
| // The time when the fulfillment updates are issued, used to prevent |
| // out-of-order updates on fulfillment information. If not provided, the |
| // internal system time will be used. |
| AddTime *timestamp.Timestamp `protobuf:"bytes,4,opt,name=add_time,json=addTime,proto3" json:"add_time,omitempty"` |
| // If set to true, and the [Product][google.cloud.retail.v2.Product] is not |
| // found, the fulfillment information will still be processed and retained for |
| // at most 1 day and processed once the |
| // [Product][google.cloud.retail.v2.Product] is created. If set to false, a |
| // NOT_FOUND error is returned if the |
| // [Product][google.cloud.retail.v2.Product] is not found. |
| AllowMissing bool `protobuf:"varint,5,opt,name=allow_missing,json=allowMissing,proto3" json:"allow_missing,omitempty"` |
| } |
| |
| func (x *AddFulfillmentPlacesRequest) Reset() { |
| *x = AddFulfillmentPlacesRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[9] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *AddFulfillmentPlacesRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*AddFulfillmentPlacesRequest) ProtoMessage() {} |
| |
| func (x *AddFulfillmentPlacesRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[9] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use AddFulfillmentPlacesRequest.ProtoReflect.Descriptor instead. |
| func (*AddFulfillmentPlacesRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2_product_service_proto_rawDescGZIP(), []int{9} |
| } |
| |
| func (x *AddFulfillmentPlacesRequest) GetProduct() string { |
| if x != nil { |
| return x.Product |
| } |
| return "" |
| } |
| |
| func (x *AddFulfillmentPlacesRequest) GetType() string { |
| if x != nil { |
| return x.Type |
| } |
| return "" |
| } |
| |
| func (x *AddFulfillmentPlacesRequest) GetPlaceIds() []string { |
| if x != nil { |
| return x.PlaceIds |
| } |
| return nil |
| } |
| |
| func (x *AddFulfillmentPlacesRequest) GetAddTime() *timestamp.Timestamp { |
| if x != nil { |
| return x.AddTime |
| } |
| return nil |
| } |
| |
| func (x *AddFulfillmentPlacesRequest) GetAllowMissing() bool { |
| if x != nil { |
| return x.AllowMissing |
| } |
| return false |
| } |
| |
| // Metadata related to the progress of the AddFulfillmentPlaces operation. |
| // Currently empty because there is no meaningful metadata populated from the |
| // [ProductService.AddFulfillmentPlaces][google.cloud.retail.v2.ProductService.AddFulfillmentPlaces] |
| // method. |
| type AddFulfillmentPlacesMetadata struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| } |
| |
| func (x *AddFulfillmentPlacesMetadata) Reset() { |
| *x = AddFulfillmentPlacesMetadata{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[10] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *AddFulfillmentPlacesMetadata) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*AddFulfillmentPlacesMetadata) ProtoMessage() {} |
| |
| func (x *AddFulfillmentPlacesMetadata) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[10] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use AddFulfillmentPlacesMetadata.ProtoReflect.Descriptor instead. |
| func (*AddFulfillmentPlacesMetadata) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2_product_service_proto_rawDescGZIP(), []int{10} |
| } |
| |
| // Response of the AddFulfillmentPlacesRequest. Currently empty because |
| // there is no meaningful response populated from the |
| // [ProductService.AddFulfillmentPlaces][google.cloud.retail.v2.ProductService.AddFulfillmentPlaces] |
| // method. |
| type AddFulfillmentPlacesResponse struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| } |
| |
| func (x *AddFulfillmentPlacesResponse) Reset() { |
| *x = AddFulfillmentPlacesResponse{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[11] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *AddFulfillmentPlacesResponse) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*AddFulfillmentPlacesResponse) ProtoMessage() {} |
| |
| func (x *AddFulfillmentPlacesResponse) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[11] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use AddFulfillmentPlacesResponse.ProtoReflect.Descriptor instead. |
| func (*AddFulfillmentPlacesResponse) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2_product_service_proto_rawDescGZIP(), []int{11} |
| } |
| |
| // Request message for |
| // [ProductService.AddLocalInventories][google.cloud.retail.v2.ProductService.AddLocalInventories] |
| // method. |
| type AddLocalInventoriesRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. Full resource name of [Product][google.cloud.retail.v2.Product], |
| // such as |
| // `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/some_product_id`. |
| // |
| // If the caller does not have permission to access the |
| // [Product][google.cloud.retail.v2.Product], regardless of whether or not it |
| // exists, a PERMISSION_DENIED error is returned. |
| Product string `protobuf:"bytes,1,opt,name=product,proto3" json:"product,omitempty"` |
| // Required. A list of inventory information at difference places. Each place |
| // is identified by its place ID. At most 3000 inventories are allowed per |
| // request. |
| LocalInventories []*LocalInventory `protobuf:"bytes,2,rep,name=local_inventories,json=localInventories,proto3" json:"local_inventories,omitempty"` |
| // Indicates which inventory fields in the provided list of |
| // [LocalInventory][google.cloud.retail.v2.LocalInventory] to update. The |
| // field is updated to the provided value. |
| // |
| // If a field is set while the place does not have a previous local inventory, |
| // the local inventory at that store is created. |
| // |
| // If a field is set while the value of that field is not provided, the |
| // original field value, if it exists, is deleted. |
| // |
| // If the mask is not set or set with empty paths, all inventory fields will |
| // be updated. |
| // |
| // If an unsupported or unknown field is provided, an INVALID_ARGUMENT error |
| // is returned and the entire update will be ignored. |
| AddMask *field_mask.FieldMask `protobuf:"bytes,4,opt,name=add_mask,json=addMask,proto3" json:"add_mask,omitempty"` |
| // The time when the inventory updates are issued. Used to prevent |
| // out-of-order updates on local inventory fields. If not provided, the |
| // internal system time will be used. |
| AddTime *timestamp.Timestamp `protobuf:"bytes,5,opt,name=add_time,json=addTime,proto3" json:"add_time,omitempty"` |
| // If set to true, and the [Product][google.cloud.retail.v2.Product] is not |
| // found, the local inventory will still be processed and retained for at most |
| // 1 day and processed once the [Product][google.cloud.retail.v2.Product] is |
| // created. If set to false, a NOT_FOUND error is returned if the |
| // [Product][google.cloud.retail.v2.Product] is not found. |
| AllowMissing bool `protobuf:"varint,6,opt,name=allow_missing,json=allowMissing,proto3" json:"allow_missing,omitempty"` |
| } |
| |
| func (x *AddLocalInventoriesRequest) Reset() { |
| *x = AddLocalInventoriesRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[12] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *AddLocalInventoriesRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*AddLocalInventoriesRequest) ProtoMessage() {} |
| |
| func (x *AddLocalInventoriesRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[12] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use AddLocalInventoriesRequest.ProtoReflect.Descriptor instead. |
| func (*AddLocalInventoriesRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2_product_service_proto_rawDescGZIP(), []int{12} |
| } |
| |
| func (x *AddLocalInventoriesRequest) GetProduct() string { |
| if x != nil { |
| return x.Product |
| } |
| return "" |
| } |
| |
| func (x *AddLocalInventoriesRequest) GetLocalInventories() []*LocalInventory { |
| if x != nil { |
| return x.LocalInventories |
| } |
| return nil |
| } |
| |
| func (x *AddLocalInventoriesRequest) GetAddMask() *field_mask.FieldMask { |
| if x != nil { |
| return x.AddMask |
| } |
| return nil |
| } |
| |
| func (x *AddLocalInventoriesRequest) GetAddTime() *timestamp.Timestamp { |
| if x != nil { |
| return x.AddTime |
| } |
| return nil |
| } |
| |
| func (x *AddLocalInventoriesRequest) GetAllowMissing() bool { |
| if x != nil { |
| return x.AllowMissing |
| } |
| return false |
| } |
| |
| // Metadata related to the progress of the AddLocalInventories operation. |
| // Currently empty because there is no meaningful metadata populated from the |
| // [ProductService.AddLocalInventories][google.cloud.retail.v2.ProductService.AddLocalInventories] |
| // method. |
| type AddLocalInventoriesMetadata struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| } |
| |
| func (x *AddLocalInventoriesMetadata) Reset() { |
| *x = AddLocalInventoriesMetadata{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[13] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *AddLocalInventoriesMetadata) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*AddLocalInventoriesMetadata) ProtoMessage() {} |
| |
| func (x *AddLocalInventoriesMetadata) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[13] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use AddLocalInventoriesMetadata.ProtoReflect.Descriptor instead. |
| func (*AddLocalInventoriesMetadata) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2_product_service_proto_rawDescGZIP(), []int{13} |
| } |
| |
| // Response of the |
| // [ProductService.AddLocalInventories][google.cloud.retail.v2.ProductService.AddLocalInventories] |
| // API. Currently empty because there is no meaningful response populated from |
| // the |
| // [ProductService.AddLocalInventories][google.cloud.retail.v2.ProductService.AddLocalInventories] |
| // method. |
| type AddLocalInventoriesResponse struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| } |
| |
| func (x *AddLocalInventoriesResponse) Reset() { |
| *x = AddLocalInventoriesResponse{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[14] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *AddLocalInventoriesResponse) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*AddLocalInventoriesResponse) ProtoMessage() {} |
| |
| func (x *AddLocalInventoriesResponse) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[14] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use AddLocalInventoriesResponse.ProtoReflect.Descriptor instead. |
| func (*AddLocalInventoriesResponse) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2_product_service_proto_rawDescGZIP(), []int{14} |
| } |
| |
| // Request message for |
| // [ProductService.RemoveLocalInventories][google.cloud.retail.v2.ProductService.RemoveLocalInventories] |
| // method. |
| type RemoveLocalInventoriesRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. Full resource name of [Product][google.cloud.retail.v2.Product], |
| // such as |
| // `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/some_product_id`. |
| // |
| // If the caller does not have permission to access the |
| // [Product][google.cloud.retail.v2.Product], regardless of whether or not it |
| // exists, a PERMISSION_DENIED error is returned. |
| Product string `protobuf:"bytes,1,opt,name=product,proto3" json:"product,omitempty"` |
| // Required. A list of place IDs to have their inventory deleted. |
| // At most 3000 place IDs are allowed per request. |
| PlaceIds []string `protobuf:"bytes,2,rep,name=place_ids,json=placeIds,proto3" json:"place_ids,omitempty"` |
| // The time when the inventory deletions are issued. Used to prevent |
| // out-of-order updates and deletions on local inventory fields. If not |
| // provided, the internal system time will be used. |
| RemoveTime *timestamp.Timestamp `protobuf:"bytes,5,opt,name=remove_time,json=removeTime,proto3" json:"remove_time,omitempty"` |
| // If set to true, and the [Product][google.cloud.retail.v2.Product] is not |
| // found, the local inventory removal request will still be processed and |
| // retained for at most 1 day and processed once the |
| // [Product][google.cloud.retail.v2.Product] is created. If set to false, a |
| // NOT_FOUND error is returned if the |
| // [Product][google.cloud.retail.v2.Product] is not found. |
| AllowMissing bool `protobuf:"varint,3,opt,name=allow_missing,json=allowMissing,proto3" json:"allow_missing,omitempty"` |
| } |
| |
| func (x *RemoveLocalInventoriesRequest) Reset() { |
| *x = RemoveLocalInventoriesRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[15] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *RemoveLocalInventoriesRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*RemoveLocalInventoriesRequest) ProtoMessage() {} |
| |
| func (x *RemoveLocalInventoriesRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[15] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use RemoveLocalInventoriesRequest.ProtoReflect.Descriptor instead. |
| func (*RemoveLocalInventoriesRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2_product_service_proto_rawDescGZIP(), []int{15} |
| } |
| |
| func (x *RemoveLocalInventoriesRequest) GetProduct() string { |
| if x != nil { |
| return x.Product |
| } |
| return "" |
| } |
| |
| func (x *RemoveLocalInventoriesRequest) GetPlaceIds() []string { |
| if x != nil { |
| return x.PlaceIds |
| } |
| return nil |
| } |
| |
| func (x *RemoveLocalInventoriesRequest) GetRemoveTime() *timestamp.Timestamp { |
| if x != nil { |
| return x.RemoveTime |
| } |
| return nil |
| } |
| |
| func (x *RemoveLocalInventoriesRequest) GetAllowMissing() bool { |
| if x != nil { |
| return x.AllowMissing |
| } |
| return false |
| } |
| |
| // Metadata related to the progress of the RemoveLocalInventories operation. |
| // Currently empty because there is no meaningful metadata populated from the |
| // [ProductService.RemoveLocalInventories][google.cloud.retail.v2.ProductService.RemoveLocalInventories] |
| // method. |
| type RemoveLocalInventoriesMetadata struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| } |
| |
| func (x *RemoveLocalInventoriesMetadata) Reset() { |
| *x = RemoveLocalInventoriesMetadata{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[16] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *RemoveLocalInventoriesMetadata) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*RemoveLocalInventoriesMetadata) ProtoMessage() {} |
| |
| func (x *RemoveLocalInventoriesMetadata) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[16] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use RemoveLocalInventoriesMetadata.ProtoReflect.Descriptor instead. |
| func (*RemoveLocalInventoriesMetadata) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2_product_service_proto_rawDescGZIP(), []int{16} |
| } |
| |
| // Response of the |
| // [ProductService.RemoveLocalInventories][google.cloud.retail.v2.ProductService.RemoveLocalInventories] |
| // API. Currently empty because there is no meaningful response populated from |
| // the |
| // [ProductService.RemoveLocalInventories][google.cloud.retail.v2.ProductService.RemoveLocalInventories] |
| // method. |
| type RemoveLocalInventoriesResponse struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| } |
| |
| func (x *RemoveLocalInventoriesResponse) Reset() { |
| *x = RemoveLocalInventoriesResponse{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[17] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *RemoveLocalInventoriesResponse) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*RemoveLocalInventoriesResponse) ProtoMessage() {} |
| |
| func (x *RemoveLocalInventoriesResponse) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[17] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use RemoveLocalInventoriesResponse.ProtoReflect.Descriptor instead. |
| func (*RemoveLocalInventoriesResponse) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2_product_service_proto_rawDescGZIP(), []int{17} |
| } |
| |
| // Request message for |
| // [ProductService.RemoveFulfillmentPlaces][google.cloud.retail.v2.ProductService.RemoveFulfillmentPlaces] |
| // method. |
| type RemoveFulfillmentPlacesRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. Full resource name of [Product][google.cloud.retail.v2.Product], |
| // such as |
| // `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/some_product_id`. |
| // |
| // If the caller does not have permission to access the |
| // [Product][google.cloud.retail.v2.Product], regardless of whether or not it |
| // exists, a PERMISSION_DENIED error is returned. |
| Product string `protobuf:"bytes,1,opt,name=product,proto3" json:"product,omitempty"` |
| // Required. The fulfillment type, including commonly used types (such as |
| // pickup in store and same day delivery), and custom types. |
| // |
| // Supported values: |
| // |
| // * "pickup-in-store" |
| // * "ship-to-store" |
| // * "same-day-delivery" |
| // * "next-day-delivery" |
| // * "custom-type-1" |
| // * "custom-type-2" |
| // * "custom-type-3" |
| // * "custom-type-4" |
| // * "custom-type-5" |
| // |
| // If this field is set to an invalid value other than these, an |
| // INVALID_ARGUMENT error is returned. |
| // |
| // This field directly corresponds to |
| // [Product.fulfillment_info.type][google.cloud.retail.v2.FulfillmentInfo.type]. |
| Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` |
| // Required. The IDs for this |
| // [type][google.cloud.retail.v2.RemoveFulfillmentPlacesRequest.type], such as |
| // the store IDs for "pickup-in-store" or the region IDs for |
| // "same-day-delivery", to be removed for this |
| // [type][google.cloud.retail.v2.RemoveFulfillmentPlacesRequest.type]. |
| // |
| // At least 1 value is required, and a maximum of 2000 values are allowed. |
| // Each value must be a string with a length limit of 10 characters, matching |
| // the pattern `[a-zA-Z0-9_-]+`, such as "store1" or "REGION-2". Otherwise, an |
| // INVALID_ARGUMENT error is returned. |
| PlaceIds []string `protobuf:"bytes,3,rep,name=place_ids,json=placeIds,proto3" json:"place_ids,omitempty"` |
| // The time when the fulfillment updates are issued, used to prevent |
| // out-of-order updates on fulfillment information. If not provided, the |
| // internal system time will be used. |
| RemoveTime *timestamp.Timestamp `protobuf:"bytes,4,opt,name=remove_time,json=removeTime,proto3" json:"remove_time,omitempty"` |
| // If set to true, and the [Product][google.cloud.retail.v2.Product] is not |
| // found, the fulfillment information will still be processed and retained for |
| // at most 1 day and processed once the |
| // [Product][google.cloud.retail.v2.Product] is created. If set to false, a |
| // NOT_FOUND error is returned if the |
| // [Product][google.cloud.retail.v2.Product] is not found. |
| AllowMissing bool `protobuf:"varint,5,opt,name=allow_missing,json=allowMissing,proto3" json:"allow_missing,omitempty"` |
| } |
| |
| func (x *RemoveFulfillmentPlacesRequest) Reset() { |
| *x = RemoveFulfillmentPlacesRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[18] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *RemoveFulfillmentPlacesRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*RemoveFulfillmentPlacesRequest) ProtoMessage() {} |
| |
| func (x *RemoveFulfillmentPlacesRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[18] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use RemoveFulfillmentPlacesRequest.ProtoReflect.Descriptor instead. |
| func (*RemoveFulfillmentPlacesRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2_product_service_proto_rawDescGZIP(), []int{18} |
| } |
| |
| func (x *RemoveFulfillmentPlacesRequest) GetProduct() string { |
| if x != nil { |
| return x.Product |
| } |
| return "" |
| } |
| |
| func (x *RemoveFulfillmentPlacesRequest) GetType() string { |
| if x != nil { |
| return x.Type |
| } |
| return "" |
| } |
| |
| func (x *RemoveFulfillmentPlacesRequest) GetPlaceIds() []string { |
| if x != nil { |
| return x.PlaceIds |
| } |
| return nil |
| } |
| |
| func (x *RemoveFulfillmentPlacesRequest) GetRemoveTime() *timestamp.Timestamp { |
| if x != nil { |
| return x.RemoveTime |
| } |
| return nil |
| } |
| |
| func (x *RemoveFulfillmentPlacesRequest) GetAllowMissing() bool { |
| if x != nil { |
| return x.AllowMissing |
| } |
| return false |
| } |
| |
| // Metadata related to the progress of the RemoveFulfillmentPlaces operation. |
| // Currently empty because there is no meaningful metadata populated from the |
| // [ProductService.RemoveFulfillmentPlaces][google.cloud.retail.v2.ProductService.RemoveFulfillmentPlaces] |
| // method. |
| type RemoveFulfillmentPlacesMetadata struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| } |
| |
| func (x *RemoveFulfillmentPlacesMetadata) Reset() { |
| *x = RemoveFulfillmentPlacesMetadata{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[19] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *RemoveFulfillmentPlacesMetadata) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*RemoveFulfillmentPlacesMetadata) ProtoMessage() {} |
| |
| func (x *RemoveFulfillmentPlacesMetadata) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[19] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use RemoveFulfillmentPlacesMetadata.ProtoReflect.Descriptor instead. |
| func (*RemoveFulfillmentPlacesMetadata) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2_product_service_proto_rawDescGZIP(), []int{19} |
| } |
| |
| // Response of the RemoveFulfillmentPlacesRequest. Currently empty because there |
| // is no meaningful response populated from the |
| // [ProductService.RemoveFulfillmentPlaces][google.cloud.retail.v2.ProductService.RemoveFulfillmentPlaces] |
| // method. |
| type RemoveFulfillmentPlacesResponse struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| } |
| |
| func (x *RemoveFulfillmentPlacesResponse) Reset() { |
| *x = RemoveFulfillmentPlacesResponse{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[20] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *RemoveFulfillmentPlacesResponse) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*RemoveFulfillmentPlacesResponse) ProtoMessage() {} |
| |
| func (x *RemoveFulfillmentPlacesResponse) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2_product_service_proto_msgTypes[20] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use RemoveFulfillmentPlacesResponse.ProtoReflect.Descriptor instead. |
| func (*RemoveFulfillmentPlacesResponse) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2_product_service_proto_rawDescGZIP(), []int{20} |
| } |
| |
| var File_google_cloud_retail_v2_product_service_proto protoreflect.FileDescriptor |
| |
| var file_google_cloud_retail_v2_product_service_proto_rawDesc = []byte{ |
| 0x0a, 0x2c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, |
| 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, |
| 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, |
| 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, |
| 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, |
| 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, |
| 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, |
| 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, |
| 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, |
| 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, |
| 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, |
| 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, |
| 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, |
| 0x32, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2a, |
| 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, |
| 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6f, |
| 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x67, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, |
| 0x76, 0x32, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, |
| 0x1a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, |
| 0x6e, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, |
| 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, |
| 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, |
| 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, |
| 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, |
| 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, |
| 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, |
| 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb8, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, |
| 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, |
| 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x24, |
| 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1e, 0x0a, 0x1c, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, |
| 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x72, |
| 0x61, 0x6e, 0x63, 0x68, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x07, |
| 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, |
| 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, |
| 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x42, 0x03, |
| 0xe0, 0x41, 0x02, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x22, 0x0a, 0x0a, |
| 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, |
| 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, |
| 0x22, 0x4e, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, |
| 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, |
| 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x72, 0x65, 0x74, |
| 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, |
| 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, |
| 0x22, 0xb8, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, |
| 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x07, 0x70, 0x72, 0x6f, |
| 0x64, 0x75, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, |
| 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, |
| 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, |
| 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, |
| 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, |
| 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, |
| 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, |
| 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, |
| 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, |
| 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x22, 0x51, 0x0a, 0x14, 0x44, |
| 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, |
| 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, |
| 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x72, 0x65, 0x74, 0x61, 0x69, |
| 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, |
| 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xe0, |
| 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, |
| 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, |
| 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x24, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1e, 0x0a, 0x1c, |
| 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, |
| 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x06, 0x70, 0x61, |
| 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, |
| 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, |
| 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, |
| 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, |
| 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, |
| 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, |
| 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, |
| 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, |
| 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x61, 0x73, |
| 0x6b, 0x22, 0x7b, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, |
| 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x70, 0x72, 0x6f, |
| 0x64, 0x75, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, |
| 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, |
| 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, |
| 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, |
| 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, |
| 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xec, |
| 0x01, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x52, |
| 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x09, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, |
| 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, |
| 0x76, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, |
| 0x09, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x35, 0x0a, 0x08, 0x73, 0x65, |
| 0x74, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, |
| 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, |
| 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x07, 0x73, 0x65, 0x74, 0x4d, 0x61, 0x73, |
| 0x6b, 0x12, 0x35, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, |
| 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, |
| 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, |
| 0x07, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, |
| 0x77, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, |
| 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x22, 0x16, 0x0a, |
| 0x14, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x4d, 0x65, 0x74, |
| 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x16, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x65, |
| 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf5, 0x01, |
| 0x0a, 0x1b, 0x41, 0x64, 0x64, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, |
| 0x50, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, |
| 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, |
| 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, |
| 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, |
| 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x17, |
| 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, |
| 0x02, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, |
| 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, |
| 0x08, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x61, 0x64, 0x64, |
| 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, |
| 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, |
| 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x61, 0x64, 0x64, 0x54, 0x69, 0x6d, 0x65, |
| 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, |
| 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x69, |
| 0x73, 0x73, 0x69, 0x6e, 0x67, 0x22, 0x1e, 0x0a, 0x1c, 0x41, 0x64, 0x64, 0x46, 0x75, 0x6c, 0x66, |
| 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x4d, 0x65, 0x74, |
| 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x1e, 0x0a, 0x1c, 0x41, 0x64, 0x64, 0x46, 0x75, 0x6c, 0x66, |
| 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, |
| 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xca, 0x02, 0x0a, 0x1a, 0x41, 0x64, 0x64, 0x4c, 0x6f, 0x63, |
| 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, |
| 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, |
| 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x72, |
| 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, |
| 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, |
| 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x58, 0x0a, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x69, |
| 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, |
| 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, |
| 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, |
| 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x10, 0x6c, |
| 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, |
| 0x35, 0x0a, 0x08, 0x61, 0x64, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, |
| 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, |
| 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x07, 0x61, |
| 0x64, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x35, 0x0a, 0x08, 0x61, 0x64, 0x64, 0x5f, 0x74, 0x69, |
| 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, |
| 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, |
| 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x61, 0x64, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, |
| 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x06, |
| 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x69, 0x73, 0x73, 0x69, |
| 0x6e, 0x67, 0x22, 0x1d, 0x0a, 0x1b, 0x41, 0x64, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x6e, |
| 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, |
| 0x61, 0x22, 0x1d, 0x0a, 0x1b, 0x41, 0x64, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x76, |
| 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, |
| 0x22, 0xe4, 0x01, 0x0a, 0x1d, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, |
| 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, |
| 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x01, 0x20, |
| 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x72, 0x65, 0x74, |
| 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, |
| 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, |
| 0x75, 0x63, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, |
| 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x70, 0x6c, 0x61, |
| 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, |
| 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, |
| 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, |
| 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x69, |
| 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69, 0x73, 0x73, |
| 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, |
| 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x22, 0x20, 0x0a, 0x1e, 0x52, 0x65, 0x6d, 0x6f, 0x76, |
| 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x69, 0x65, |
| 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x20, 0x0a, 0x1e, 0x52, 0x65, 0x6d, |
| 0x6f, 0x76, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, |
| 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfe, 0x01, 0x0a, 0x1e, |
| 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, |
| 0x74, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, |
| 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, |
| 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, |
| 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, |
| 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, |
| 0x17, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, |
| 0x41, 0x02, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x63, |
| 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, |
| 0x52, 0x08, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, |
| 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, |
| 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, |
| 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x6d, |
| 0x6f, 0x76, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, |
| 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, |
| 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x22, 0x21, 0x0a, 0x1f, |
| 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, |
| 0x74, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, |
| 0x21, 0x0a, 0x1f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, |
| 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, |
| 0x73, 0x65, 0x32, 0xae, 0x17, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, |
| 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xcf, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, |
| 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, |
| 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, |
| 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, |
| 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, |
| 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x50, |
| 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x6f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4d, 0x22, 0x42, |
| 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, |
| 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, |
| 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x72, |
| 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, |
| 0x74, 0x73, 0x3a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0xda, 0x41, 0x19, 0x70, 0x61, |
| 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2c, 0x70, 0x72, 0x6f, |
| 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x12, 0xac, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50, |
| 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, |
| 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e, |
| 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, |
| 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, |
| 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, |
| 0x63, 0x74, 0x22, 0x52, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x12, 0x43, 0x2f, 0x76, 0x32, 0x2f, |
| 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, |
| 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, |
| 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, |
| 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2a, 0x7d, 0xda, |
| 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xbe, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, |
| 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x12, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, |
| 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, |
| 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, |
| 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, |
| 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, |
| 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, |
| 0x73, 0x65, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x12, 0x42, 0x2f, 0x76, 0x32, 0x2f, |
| 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, |
| 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, |
| 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, |
| 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0xda, 0x41, |
| 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0xd2, 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, |
| 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, |
| 0x76, 0x32, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, |
| 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, |
| 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, |
| 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x56, |
| 0x32, 0x4b, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x6e, |
| 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, |
| 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, |
| 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x2a, |
| 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2a, 0x7d, 0x3a, 0x07, 0x70, |
| 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0xda, 0x41, 0x13, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, |
| 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x12, 0xa9, 0x01, 0x0a, |
| 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x2c, |
| 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, |
| 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, |
| 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, |
| 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, |
| 0x6d, 0x70, 0x74, 0x79, 0x22, 0x52, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x2a, 0x43, 0x2f, 0x76, |
| 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, |
| 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, |
| 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, |
| 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2a, |
| 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x8e, 0x02, 0x0a, 0x0e, 0x49, 0x6d, 0x70, |
| 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x12, 0x2d, 0x2e, 0x67, 0x6f, |
| 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, |
| 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, |
| 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, |
| 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, |
| 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xad, 0x01, 0x82, 0xd3, 0xe4, 0x93, |
| 0x02, 0x4e, 0x22, 0x49, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, |
| 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, |
| 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, |
| 0x2a, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, |
| 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x3a, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x3a, 0x01, 0x2a, |
| 0xca, 0x41, 0x56, 0x0a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, |
| 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6d, 0x70, 0x6f, |
| 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, |
| 0x73, 0x65, 0x12, 0x25, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, |
| 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, |
| 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xb4, 0x02, 0x0a, 0x0c, 0x53, 0x65, |
| 0x74, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, |
| 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, |
| 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, |
| 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, |
| 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, |
| 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xd7, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5f, 0x22, |
| 0x5a, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, |
| 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, |
| 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, 0x61, |
| 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x2f, |
| 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2a, 0x7d, 0x3a, 0x73, |
| 0x65, 0x74, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x3a, 0x01, 0x2a, 0xda, 0x41, |
| 0x12, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2c, 0x73, 0x65, 0x74, 0x5f, 0x6d, |
| 0x61, 0x73, 0x6b, 0xca, 0x41, 0x5a, 0x0a, 0x2b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, |
| 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x53, |
| 0x65, 0x74, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, |
| 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, |
| 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x49, |
| 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, |
| 0x12, 0xca, 0x02, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, |
| 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, |
| 0x76, 0x32, 0x2e, 0x41, 0x64, 0x64, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, |
| 0x74, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, |
| 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, |
| 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xdd, 0x01, |
| 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x60, 0x22, 0x5b, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x72, 0x6f, |
| 0x64, 0x75, 0x63, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, |
| 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, 0x61, |
| 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x2f, |
| 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2a, 0x7d, 0x3a, 0x61, |
| 0x64, 0x64, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, |
| 0x63, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, |
| 0xca, 0x41, 0x6a, 0x0a, 0x33, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, |
| 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x64, 0x64, 0x46, |
| 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x73, |
| 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, |
| 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, |
| 0x2e, 0x41, 0x64, 0x64, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x50, |
| 0x6c, 0x61, 0x63, 0x65, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xd9, 0x02, |
| 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, |
| 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, |
| 0x76, 0x32, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, |
| 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, |
| 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, |
| 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, |
| 0x22, 0xe6, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x63, 0x22, 0x5e, 0x2f, 0x76, 0x32, 0x2f, 0x7b, |
| 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, |
| 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, |
| 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, |
| 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2a, |
| 0x7d, 0x3a, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, |
| 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x07, 0x70, |
| 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0xca, 0x41, 0x70, 0x0a, 0x36, 0x67, 0x6f, 0x6f, 0x67, 0x6c, |
| 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, |
| 0x32, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, |
| 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, |
| 0x65, 0x12, 0x36, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, |
| 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, |
| 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x63, 0x65, |
| 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xc5, 0x02, 0x0a, 0x13, 0x41, 0x64, |
| 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x69, 0x65, |
| 0x73, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, |
| 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x64, 0x64, 0x4c, 0x6f, |
| 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, |
| 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, |
| 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, |
| 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xda, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5f, 0x22, 0x5a, 0x2f, |
| 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, |
| 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, |
| 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x72, |
| 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, |
| 0x73, 0x2f, 0x2a, 0x2a, 0x7d, 0x3a, 0x61, 0x64, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x6e, |
| 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x07, 0x70, |
| 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0xca, 0x41, 0x68, 0x0a, 0x32, 0x67, 0x6f, 0x6f, 0x67, 0x6c, |
| 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, |
| 0x32, 0x2e, 0x41, 0x64, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, |
| 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x67, |
| 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, |
| 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x64, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x6e, |
| 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, |
| 0x61, 0x12, 0xd4, 0x02, 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x6f, 0x63, 0x61, |
| 0x6c, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x35, 0x2e, 0x67, |
| 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, |
| 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x6f, 0x63, 0x61, |
| 0x6c, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, |
| 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, |
| 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, |
| 0x6f, 0x6e, 0x22, 0xe3, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x62, 0x22, 0x5d, 0x2f, 0x76, 0x32, |
| 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, |
| 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, |
| 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x72, 0x61, 0x6e, |
| 0x63, 0x68, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, |
| 0x2a, 0x2a, 0x7d, 0x3a, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, |
| 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x07, |
| 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0xca, 0x41, 0x6e, 0x0a, 0x35, 0x67, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, |
| 0x76, 0x32, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x6e, |
| 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, |
| 0x65, 0x12, 0x35, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, |
| 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, |
| 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, |
| 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x49, 0xca, 0x41, 0x15, 0x72, 0x65, 0x74, |
| 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, |
| 0x6f, 0x6d, 0xd2, 0x41, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, |
| 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, |
| 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, |
| 0x6f, 0x72, 0x6d, 0x42, 0xc8, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, |
| 0x76, 0x32, 0x42, 0x13, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, |
| 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, |
| 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, |
| 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, |
| 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, |
| 0x3b, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0xa2, 0x02, 0x06, 0x52, 0x45, 0x54, 0x41, 0x49, 0x4c, |
| 0xaa, 0x02, 0x16, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, |
| 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x56, 0x32, 0xca, 0x02, 0x16, 0x47, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x5c, |
| 0x56, 0x32, 0xea, 0x02, 0x19, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, |
| 0x75, 0x64, 0x3a, 0x3a, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x06, |
| 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, |
| } |
| |
| var ( |
| file_google_cloud_retail_v2_product_service_proto_rawDescOnce sync.Once |
| file_google_cloud_retail_v2_product_service_proto_rawDescData = file_google_cloud_retail_v2_product_service_proto_rawDesc |
| ) |
| |
| func file_google_cloud_retail_v2_product_service_proto_rawDescGZIP() []byte { |
| file_google_cloud_retail_v2_product_service_proto_rawDescOnce.Do(func() { |
| file_google_cloud_retail_v2_product_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_retail_v2_product_service_proto_rawDescData) |
| }) |
| return file_google_cloud_retail_v2_product_service_proto_rawDescData |
| } |
| |
| var file_google_cloud_retail_v2_product_service_proto_msgTypes = make([]protoimpl.MessageInfo, 21) |
| var file_google_cloud_retail_v2_product_service_proto_goTypes = []interface{}{ |
| (*CreateProductRequest)(nil), // 0: google.cloud.retail.v2.CreateProductRequest |
| (*GetProductRequest)(nil), // 1: google.cloud.retail.v2.GetProductRequest |
| (*UpdateProductRequest)(nil), // 2: google.cloud.retail.v2.UpdateProductRequest |
| (*DeleteProductRequest)(nil), // 3: google.cloud.retail.v2.DeleteProductRequest |
| (*ListProductsRequest)(nil), // 4: google.cloud.retail.v2.ListProductsRequest |
| (*ListProductsResponse)(nil), // 5: google.cloud.retail.v2.ListProductsResponse |
| (*SetInventoryRequest)(nil), // 6: google.cloud.retail.v2.SetInventoryRequest |
| (*SetInventoryMetadata)(nil), // 7: google.cloud.retail.v2.SetInventoryMetadata |
| (*SetInventoryResponse)(nil), // 8: google.cloud.retail.v2.SetInventoryResponse |
| (*AddFulfillmentPlacesRequest)(nil), // 9: google.cloud.retail.v2.AddFulfillmentPlacesRequest |
| (*AddFulfillmentPlacesMetadata)(nil), // 10: google.cloud.retail.v2.AddFulfillmentPlacesMetadata |
| (*AddFulfillmentPlacesResponse)(nil), // 11: google.cloud.retail.v2.AddFulfillmentPlacesResponse |
| (*AddLocalInventoriesRequest)(nil), // 12: google.cloud.retail.v2.AddLocalInventoriesRequest |
| (*AddLocalInventoriesMetadata)(nil), // 13: google.cloud.retail.v2.AddLocalInventoriesMetadata |
| (*AddLocalInventoriesResponse)(nil), // 14: google.cloud.retail.v2.AddLocalInventoriesResponse |
| (*RemoveLocalInventoriesRequest)(nil), // 15: google.cloud.retail.v2.RemoveLocalInventoriesRequest |
| (*RemoveLocalInventoriesMetadata)(nil), // 16: google.cloud.retail.v2.RemoveLocalInventoriesMetadata |
| (*RemoveLocalInventoriesResponse)(nil), // 17: google.cloud.retail.v2.RemoveLocalInventoriesResponse |
| (*RemoveFulfillmentPlacesRequest)(nil), // 18: google.cloud.retail.v2.RemoveFulfillmentPlacesRequest |
| (*RemoveFulfillmentPlacesMetadata)(nil), // 19: google.cloud.retail.v2.RemoveFulfillmentPlacesMetadata |
| (*RemoveFulfillmentPlacesResponse)(nil), // 20: google.cloud.retail.v2.RemoveFulfillmentPlacesResponse |
| (*Product)(nil), // 21: google.cloud.retail.v2.Product |
| (*field_mask.FieldMask)(nil), // 22: google.protobuf.FieldMask |
| (*timestamp.Timestamp)(nil), // 23: google.protobuf.Timestamp |
| (*LocalInventory)(nil), // 24: google.cloud.retail.v2.LocalInventory |
| (*ImportProductsRequest)(nil), // 25: google.cloud.retail.v2.ImportProductsRequest |
| (*empty.Empty)(nil), // 26: google.protobuf.Empty |
| (*longrunning.Operation)(nil), // 27: google.longrunning.Operation |
| } |
| var file_google_cloud_retail_v2_product_service_proto_depIdxs = []int32{ |
| 21, // 0: google.cloud.retail.v2.CreateProductRequest.product:type_name -> google.cloud.retail.v2.Product |
| 21, // 1: google.cloud.retail.v2.UpdateProductRequest.product:type_name -> google.cloud.retail.v2.Product |
| 22, // 2: google.cloud.retail.v2.UpdateProductRequest.update_mask:type_name -> google.protobuf.FieldMask |
| 22, // 3: google.cloud.retail.v2.ListProductsRequest.read_mask:type_name -> google.protobuf.FieldMask |
| 21, // 4: google.cloud.retail.v2.ListProductsResponse.products:type_name -> google.cloud.retail.v2.Product |
| 21, // 5: google.cloud.retail.v2.SetInventoryRequest.inventory:type_name -> google.cloud.retail.v2.Product |
| 22, // 6: google.cloud.retail.v2.SetInventoryRequest.set_mask:type_name -> google.protobuf.FieldMask |
| 23, // 7: google.cloud.retail.v2.SetInventoryRequest.set_time:type_name -> google.protobuf.Timestamp |
| 23, // 8: google.cloud.retail.v2.AddFulfillmentPlacesRequest.add_time:type_name -> google.protobuf.Timestamp |
| 24, // 9: google.cloud.retail.v2.AddLocalInventoriesRequest.local_inventories:type_name -> google.cloud.retail.v2.LocalInventory |
| 22, // 10: google.cloud.retail.v2.AddLocalInventoriesRequest.add_mask:type_name -> google.protobuf.FieldMask |
| 23, // 11: google.cloud.retail.v2.AddLocalInventoriesRequest.add_time:type_name -> google.protobuf.Timestamp |
| 23, // 12: google.cloud.retail.v2.RemoveLocalInventoriesRequest.remove_time:type_name -> google.protobuf.Timestamp |
| 23, // 13: google.cloud.retail.v2.RemoveFulfillmentPlacesRequest.remove_time:type_name -> google.protobuf.Timestamp |
| 0, // 14: google.cloud.retail.v2.ProductService.CreateProduct:input_type -> google.cloud.retail.v2.CreateProductRequest |
| 1, // 15: google.cloud.retail.v2.ProductService.GetProduct:input_type -> google.cloud.retail.v2.GetProductRequest |
| 4, // 16: google.cloud.retail.v2.ProductService.ListProducts:input_type -> google.cloud.retail.v2.ListProductsRequest |
| 2, // 17: google.cloud.retail.v2.ProductService.UpdateProduct:input_type -> google.cloud.retail.v2.UpdateProductRequest |
| 3, // 18: google.cloud.retail.v2.ProductService.DeleteProduct:input_type -> google.cloud.retail.v2.DeleteProductRequest |
| 25, // 19: google.cloud.retail.v2.ProductService.ImportProducts:input_type -> google.cloud.retail.v2.ImportProductsRequest |
| 6, // 20: google.cloud.retail.v2.ProductService.SetInventory:input_type -> google.cloud.retail.v2.SetInventoryRequest |
| 9, // 21: google.cloud.retail.v2.ProductService.AddFulfillmentPlaces:input_type -> google.cloud.retail.v2.AddFulfillmentPlacesRequest |
| 18, // 22: google.cloud.retail.v2.ProductService.RemoveFulfillmentPlaces:input_type -> google.cloud.retail.v2.RemoveFulfillmentPlacesRequest |
| 12, // 23: google.cloud.retail.v2.ProductService.AddLocalInventories:input_type -> google.cloud.retail.v2.AddLocalInventoriesRequest |
| 15, // 24: google.cloud.retail.v2.ProductService.RemoveLocalInventories:input_type -> google.cloud.retail.v2.RemoveLocalInventoriesRequest |
| 21, // 25: google.cloud.retail.v2.ProductService.CreateProduct:output_type -> google.cloud.retail.v2.Product |
| 21, // 26: google.cloud.retail.v2.ProductService.GetProduct:output_type -> google.cloud.retail.v2.Product |
| 5, // 27: google.cloud.retail.v2.ProductService.ListProducts:output_type -> google.cloud.retail.v2.ListProductsResponse |
| 21, // 28: google.cloud.retail.v2.ProductService.UpdateProduct:output_type -> google.cloud.retail.v2.Product |
| 26, // 29: google.cloud.retail.v2.ProductService.DeleteProduct:output_type -> google.protobuf.Empty |
| 27, // 30: google.cloud.retail.v2.ProductService.ImportProducts:output_type -> google.longrunning.Operation |
| 27, // 31: google.cloud.retail.v2.ProductService.SetInventory:output_type -> google.longrunning.Operation |
| 27, // 32: google.cloud.retail.v2.ProductService.AddFulfillmentPlaces:output_type -> google.longrunning.Operation |
| 27, // 33: google.cloud.retail.v2.ProductService.RemoveFulfillmentPlaces:output_type -> google.longrunning.Operation |
| 27, // 34: google.cloud.retail.v2.ProductService.AddLocalInventories:output_type -> google.longrunning.Operation |
| 27, // 35: google.cloud.retail.v2.ProductService.RemoveLocalInventories:output_type -> google.longrunning.Operation |
| 25, // [25:36] is the sub-list for method output_type |
| 14, // [14:25] is the sub-list for method input_type |
| 14, // [14:14] is the sub-list for extension type_name |
| 14, // [14:14] is the sub-list for extension extendee |
| 0, // [0:14] is the sub-list for field type_name |
| } |
| |
| func init() { file_google_cloud_retail_v2_product_service_proto_init() } |
| func file_google_cloud_retail_v2_product_service_proto_init() { |
| if File_google_cloud_retail_v2_product_service_proto != nil { |
| return |
| } |
| file_google_cloud_retail_v2_common_proto_init() |
| file_google_cloud_retail_v2_import_config_proto_init() |
| file_google_cloud_retail_v2_product_proto_init() |
| if !protoimpl.UnsafeEnabled { |
| file_google_cloud_retail_v2_product_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*CreateProductRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2_product_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*GetProductRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2_product_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*UpdateProductRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2_product_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*DeleteProductRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2_product_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ListProductsRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2_product_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ListProductsResponse); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2_product_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*SetInventoryRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2_product_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*SetInventoryMetadata); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2_product_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*SetInventoryResponse); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2_product_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*AddFulfillmentPlacesRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2_product_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*AddFulfillmentPlacesMetadata); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2_product_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*AddFulfillmentPlacesResponse); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2_product_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*AddLocalInventoriesRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2_product_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*AddLocalInventoriesMetadata); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2_product_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*AddLocalInventoriesResponse); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2_product_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*RemoveLocalInventoriesRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2_product_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*RemoveLocalInventoriesMetadata); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2_product_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*RemoveLocalInventoriesResponse); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2_product_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*RemoveFulfillmentPlacesRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2_product_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*RemoveFulfillmentPlacesMetadata); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2_product_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*RemoveFulfillmentPlacesResponse); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| } |
| type x struct{} |
| out := protoimpl.TypeBuilder{ |
| File: protoimpl.DescBuilder{ |
| GoPackagePath: reflect.TypeOf(x{}).PkgPath(), |
| RawDescriptor: file_google_cloud_retail_v2_product_service_proto_rawDesc, |
| NumEnums: 0, |
| NumMessages: 21, |
| NumExtensions: 0, |
| NumServices: 1, |
| }, |
| GoTypes: file_google_cloud_retail_v2_product_service_proto_goTypes, |
| DependencyIndexes: file_google_cloud_retail_v2_product_service_proto_depIdxs, |
| MessageInfos: file_google_cloud_retail_v2_product_service_proto_msgTypes, |
| }.Build() |
| File_google_cloud_retail_v2_product_service_proto = out.File |
| file_google_cloud_retail_v2_product_service_proto_rawDesc = nil |
| file_google_cloud_retail_v2_product_service_proto_goTypes = nil |
| file_google_cloud_retail_v2_product_service_proto_depIdxs = nil |
| } |
| |
| // Reference imports to suppress errors if they are not otherwise used. |
| var _ context.Context |
| var _ grpc.ClientConnInterface |
| |
| // This is a compile-time assertion to ensure that this generated file |
| // is compatible with the grpc package it is being compiled against. |
| const _ = grpc.SupportPackageIsVersion6 |
| |
| // ProductServiceClient is the client API for ProductService service. |
| // |
| // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. |
| type ProductServiceClient interface { |
| // Creates a [Product][google.cloud.retail.v2.Product]. |
| CreateProduct(ctx context.Context, in *CreateProductRequest, opts ...grpc.CallOption) (*Product, error) |
| // Gets a [Product][google.cloud.retail.v2.Product]. |
| GetProduct(ctx context.Context, in *GetProductRequest, opts ...grpc.CallOption) (*Product, error) |
| // Gets a list of [Product][google.cloud.retail.v2.Product]s. |
| ListProducts(ctx context.Context, in *ListProductsRequest, opts ...grpc.CallOption) (*ListProductsResponse, error) |
| // Updates a [Product][google.cloud.retail.v2.Product]. |
| UpdateProduct(ctx context.Context, in *UpdateProductRequest, opts ...grpc.CallOption) (*Product, error) |
| // Deletes a [Product][google.cloud.retail.v2.Product]. |
| DeleteProduct(ctx context.Context, in *DeleteProductRequest, opts ...grpc.CallOption) (*empty.Empty, error) |
| // Bulk import of multiple [Product][google.cloud.retail.v2.Product]s. |
| // |
| // Request processing may be synchronous. |
| // Non-existing items are created. |
| // |
| // Note that it is possible for a subset of the |
| // [Product][google.cloud.retail.v2.Product]s to be successfully updated. |
| ImportProducts(ctx context.Context, in *ImportProductsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) |
| // Updates inventory information for a |
| // [Product][google.cloud.retail.v2.Product] while respecting the last update |
| // timestamps of each inventory field. |
| // |
| // This process is asynchronous and does not require the |
| // [Product][google.cloud.retail.v2.Product] to exist before updating |
| // fulfillment information. If the request is valid, the update will be |
| // enqueued and processed downstream. As a consequence, when a response is |
| // returned, updates are not immediately manifested in the |
| // [Product][google.cloud.retail.v2.Product] queried by |
| // [ProductService.GetProduct][google.cloud.retail.v2.ProductService.GetProduct] |
| // or |
| // [ProductService.ListProducts][google.cloud.retail.v2.ProductService.ListProducts]. |
| // |
| // When inventory is updated with |
| // [ProductService.CreateProduct][google.cloud.retail.v2.ProductService.CreateProduct] |
| // and |
| // [ProductService.UpdateProduct][google.cloud.retail.v2.ProductService.UpdateProduct], |
| // the specified inventory field value(s) will overwrite any existing value(s) |
| // while ignoring the last update time for this field. Furthermore, the last |
| // update time for the specified inventory fields will be overwritten to the |
| // time of the |
| // [ProductService.CreateProduct][google.cloud.retail.v2.ProductService.CreateProduct] |
| // or |
| // [ProductService.UpdateProduct][google.cloud.retail.v2.ProductService.UpdateProduct] |
| // request. |
| // |
| // If no inventory fields are set in |
| // [CreateProductRequest.product][google.cloud.retail.v2.CreateProductRequest.product], |
| // then any pre-existing inventory information for this product will be used. |
| // |
| // If no inventory fields are set in |
| // [SetInventoryRequest.set_mask][google.cloud.retail.v2.SetInventoryRequest.set_mask], |
| // then any existing inventory information will be preserved. |
| // |
| // Pre-existing inventory information can only be updated with |
| // [ProductService.SetInventory][google.cloud.retail.v2.ProductService.SetInventory], |
| // [ProductService.AddFulfillmentPlaces][google.cloud.retail.v2.ProductService.AddFulfillmentPlaces], |
| // and |
| // [ProductService.RemoveFulfillmentPlaces][google.cloud.retail.v2.ProductService.RemoveFulfillmentPlaces]. |
| // |
| // The returned [Operation][]s will be obsolete after 1 day, and |
| // [GetOperation][] API will return NOT_FOUND afterwards. |
| // |
| // If conflicting updates are issued, the [Operation][]s associated with the |
| // stale updates will not be marked as [done][Operation.done] until being |
| // obsolete. |
| // |
| // This feature is only available for users who have Retail Search enabled. |
| // Please enable Retail Search on Cloud Console before using this feature. |
| SetInventory(ctx context.Context, in *SetInventoryRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) |
| // Incrementally adds place IDs to |
| // [Product.fulfillment_info.place_ids][google.cloud.retail.v2.FulfillmentInfo.place_ids]. |
| // |
| // This process is asynchronous and does not require the |
| // [Product][google.cloud.retail.v2.Product] to exist before updating |
| // fulfillment information. If the request is valid, the update will be |
| // enqueued and processed downstream. As a consequence, when a response is |
| // returned, the added place IDs are not immediately manifested in the |
| // [Product][google.cloud.retail.v2.Product] queried by |
| // [ProductService.GetProduct][google.cloud.retail.v2.ProductService.GetProduct] |
| // or |
| // [ProductService.ListProducts][google.cloud.retail.v2.ProductService.ListProducts]. |
| // |
| // The returned [Operation][]s will be obsolete after 1 day, and |
| // [GetOperation][] API will return NOT_FOUND afterwards. |
| // |
| // If conflicting updates are issued, the [Operation][]s associated with the |
| // stale updates will not be marked as [done][Operation.done] until being |
| // obsolete. |
| // |
| // This feature is only available for users who have Retail Search enabled. |
| // Please enable Retail Search on Cloud Console before using this feature. |
| AddFulfillmentPlaces(ctx context.Context, in *AddFulfillmentPlacesRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) |
| // Incrementally removes place IDs from a |
| // [Product.fulfillment_info.place_ids][google.cloud.retail.v2.FulfillmentInfo.place_ids]. |
| // |
| // This process is asynchronous and does not require the |
| // [Product][google.cloud.retail.v2.Product] to exist before updating |
| // fulfillment information. If the request is valid, the update will be |
| // enqueued and processed downstream. As a consequence, when a response is |
| // returned, the removed place IDs are not immediately manifested in the |
| // [Product][google.cloud.retail.v2.Product] queried by |
| // [ProductService.GetProduct][google.cloud.retail.v2.ProductService.GetProduct] |
| // or |
| // [ProductService.ListProducts][google.cloud.retail.v2.ProductService.ListProducts]. |
| // |
| // The returned [Operation][]s will be obsolete after 1 day, and |
| // [GetOperation][] API will return NOT_FOUND afterwards. |
| // |
| // If conflicting updates are issued, the [Operation][]s associated with the |
| // stale updates will not be marked as [done][Operation.done] until being |
| // obsolete. |
| // |
| // This feature is only available for users who have Retail Search enabled. |
| // Please enable Retail Search on Cloud Console before using this feature. |
| RemoveFulfillmentPlaces(ctx context.Context, in *RemoveFulfillmentPlacesRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) |
| // Updates local inventory information for a |
| // [Product][google.cloud.retail.v2.Product] at a list of places, while |
| // respecting the last update timestamps of each inventory field. |
| // |
| // This process is asynchronous and does not require the |
| // [Product][google.cloud.retail.v2.Product] to exist before updating |
| // inventory information. If the request is valid, the update will be enqueued |
| // and processed downstream. As a consequence, when a response is returned, |
| // updates are not immediately manifested in the |
| // [Product][google.cloud.retail.v2.Product] queried by |
| // [ProductService.GetProduct][google.cloud.retail.v2.ProductService.GetProduct] |
| // or |
| // [ProductService.ListProducts][google.cloud.retail.v2.ProductService.ListProducts]. |
| // |
| // Local inventory information can only be modified using this method. |
| // [ProductService.CreateProduct][google.cloud.retail.v2.ProductService.CreateProduct] |
| // and |
| // [ProductService.UpdateProduct][google.cloud.retail.v2.ProductService.UpdateProduct] |
| // has no effect on local inventories. |
| // |
| // The returned [Operation][]s will be obsolete after 1 day, and |
| // [GetOperation][] API will return NOT_FOUND afterwards. |
| // |
| // If conflicting updates are issued, the [Operation][]s associated with the |
| // stale updates will not be marked as [done][Operation.done] until being |
| // obsolete. |
| // |
| // This feature is only available for users who have Retail Search enabled. |
| // Please enable Retail Search on Cloud Console before using this feature. |
| AddLocalInventories(ctx context.Context, in *AddLocalInventoriesRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) |
| // Remove local inventory information for a |
| // [Product][google.cloud.retail.v2.Product] at a list of places at a removal |
| // timestamp. |
| // |
| // This process is asynchronous. If the request is valid, the removal will be |
| // enqueued and processed downstream. As a consequence, when a response is |
| // returned, removals are not immediately manifested in the |
| // [Product][google.cloud.retail.v2.Product] queried by |
| // [ProductService.GetProduct][google.cloud.retail.v2.ProductService.GetProduct] |
| // or |
| // [ProductService.ListProducts][google.cloud.retail.v2.ProductService.ListProducts]. |
| // |
| // Local inventory information can only be removed using this method. |
| // [ProductService.CreateProduct][google.cloud.retail.v2.ProductService.CreateProduct] |
| // and |
| // [ProductService.UpdateProduct][google.cloud.retail.v2.ProductService.UpdateProduct] |
| // has no effect on local inventories. |
| // |
| // The returned [Operation][]s will be obsolete after 1 day, and |
| // [GetOperation][] API will return NOT_FOUND afterwards. |
| // |
| // If conflicting updates are issued, the [Operation][]s associated with the |
| // stale updates will not be marked as [done][Operation.done] until being |
| // obsolete. |
| // |
| // This feature is only available for users who have Retail Search enabled. |
| // Please enable Retail Search on Cloud Console before using this feature. |
| RemoveLocalInventories(ctx context.Context, in *RemoveLocalInventoriesRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) |
| } |
| |
| type productServiceClient struct { |
| cc grpc.ClientConnInterface |
| } |
| |
| func NewProductServiceClient(cc grpc.ClientConnInterface) ProductServiceClient { |
| return &productServiceClient{cc} |
| } |
| |
| func (c *productServiceClient) CreateProduct(ctx context.Context, in *CreateProductRequest, opts ...grpc.CallOption) (*Product, error) { |
| out := new(Product) |
| err := c.cc.Invoke(ctx, "/google.cloud.retail.v2.ProductService/CreateProduct", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| func (c *productServiceClient) GetProduct(ctx context.Context, in *GetProductRequest, opts ...grpc.CallOption) (*Product, error) { |
| out := new(Product) |
| err := c.cc.Invoke(ctx, "/google.cloud.retail.v2.ProductService/GetProduct", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| func (c *productServiceClient) ListProducts(ctx context.Context, in *ListProductsRequest, opts ...grpc.CallOption) (*ListProductsResponse, error) { |
| out := new(ListProductsResponse) |
| err := c.cc.Invoke(ctx, "/google.cloud.retail.v2.ProductService/ListProducts", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| func (c *productServiceClient) UpdateProduct(ctx context.Context, in *UpdateProductRequest, opts ...grpc.CallOption) (*Product, error) { |
| out := new(Product) |
| err := c.cc.Invoke(ctx, "/google.cloud.retail.v2.ProductService/UpdateProduct", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| func (c *productServiceClient) DeleteProduct(ctx context.Context, in *DeleteProductRequest, opts ...grpc.CallOption) (*empty.Empty, error) { |
| out := new(empty.Empty) |
| err := c.cc.Invoke(ctx, "/google.cloud.retail.v2.ProductService/DeleteProduct", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| func (c *productServiceClient) ImportProducts(ctx context.Context, in *ImportProductsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) { |
| out := new(longrunning.Operation) |
| err := c.cc.Invoke(ctx, "/google.cloud.retail.v2.ProductService/ImportProducts", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| func (c *productServiceClient) SetInventory(ctx context.Context, in *SetInventoryRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) { |
| out := new(longrunning.Operation) |
| err := c.cc.Invoke(ctx, "/google.cloud.retail.v2.ProductService/SetInventory", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| func (c *productServiceClient) AddFulfillmentPlaces(ctx context.Context, in *AddFulfillmentPlacesRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) { |
| out := new(longrunning.Operation) |
| err := c.cc.Invoke(ctx, "/google.cloud.retail.v2.ProductService/AddFulfillmentPlaces", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| func (c *productServiceClient) RemoveFulfillmentPlaces(ctx context.Context, in *RemoveFulfillmentPlacesRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) { |
| out := new(longrunning.Operation) |
| err := c.cc.Invoke(ctx, "/google.cloud.retail.v2.ProductService/RemoveFulfillmentPlaces", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| func (c *productServiceClient) AddLocalInventories(ctx context.Context, in *AddLocalInventoriesRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) { |
| out := new(longrunning.Operation) |
| err := c.cc.Invoke(ctx, "/google.cloud.retail.v2.ProductService/AddLocalInventories", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| func (c *productServiceClient) RemoveLocalInventories(ctx context.Context, in *RemoveLocalInventoriesRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) { |
| out := new(longrunning.Operation) |
| err := c.cc.Invoke(ctx, "/google.cloud.retail.v2.ProductService/RemoveLocalInventories", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| // ProductServiceServer is the server API for ProductService service. |
| type ProductServiceServer interface { |
| // Creates a [Product][google.cloud.retail.v2.Product]. |
| CreateProduct(context.Context, *CreateProductRequest) (*Product, error) |
| // Gets a [Product][google.cloud.retail.v2.Product]. |
| GetProduct(context.Context, *GetProductRequest) (*Product, error) |
| // Gets a list of [Product][google.cloud.retail.v2.Product]s. |
| ListProducts(context.Context, *ListProductsRequest) (*ListProductsResponse, error) |
| // Updates a [Product][google.cloud.retail.v2.Product]. |
| UpdateProduct(context.Context, *UpdateProductRequest) (*Product, error) |
| // Deletes a [Product][google.cloud.retail.v2.Product]. |
| DeleteProduct(context.Context, *DeleteProductRequest) (*empty.Empty, error) |
| // Bulk import of multiple [Product][google.cloud.retail.v2.Product]s. |
| // |
| // Request processing may be synchronous. |
| // Non-existing items are created. |
| // |
| // Note that it is possible for a subset of the |
| // [Product][google.cloud.retail.v2.Product]s to be successfully updated. |
| ImportProducts(context.Context, *ImportProductsRequest) (*longrunning.Operation, error) |
| // Updates inventory information for a |
| // [Product][google.cloud.retail.v2.Product] while respecting the last update |
| // timestamps of each inventory field. |
| // |
| // This process is asynchronous and does not require the |
| // [Product][google.cloud.retail.v2.Product] to exist before updating |
| // fulfillment information. If the request is valid, the update will be |
| // enqueued and processed downstream. As a consequence, when a response is |
| // returned, updates are not immediately manifested in the |
| // [Product][google.cloud.retail.v2.Product] queried by |
| // [ProductService.GetProduct][google.cloud.retail.v2.ProductService.GetProduct] |
| // or |
| // [ProductService.ListProducts][google.cloud.retail.v2.ProductService.ListProducts]. |
| // |
| // When inventory is updated with |
| // [ProductService.CreateProduct][google.cloud.retail.v2.ProductService.CreateProduct] |
| // and |
| // [ProductService.UpdateProduct][google.cloud.retail.v2.ProductService.UpdateProduct], |
| // the specified inventory field value(s) will overwrite any existing value(s) |
| // while ignoring the last update time for this field. Furthermore, the last |
| // update time for the specified inventory fields will be overwritten to the |
| // time of the |
| // [ProductService.CreateProduct][google.cloud.retail.v2.ProductService.CreateProduct] |
| // or |
| // [ProductService.UpdateProduct][google.cloud.retail.v2.ProductService.UpdateProduct] |
| // request. |
| // |
| // If no inventory fields are set in |
| // [CreateProductRequest.product][google.cloud.retail.v2.CreateProductRequest.product], |
| // then any pre-existing inventory information for this product will be used. |
| // |
| // If no inventory fields are set in |
| // [SetInventoryRequest.set_mask][google.cloud.retail.v2.SetInventoryRequest.set_mask], |
| // then any existing inventory information will be preserved. |
| // |
| // Pre-existing inventory information can only be updated with |
| // [ProductService.SetInventory][google.cloud.retail.v2.ProductService.SetInventory], |
| // [ProductService.AddFulfillmentPlaces][google.cloud.retail.v2.ProductService.AddFulfillmentPlaces], |
| // and |
| // [ProductService.RemoveFulfillmentPlaces][google.cloud.retail.v2.ProductService.RemoveFulfillmentPlaces]. |
| // |
| // The returned [Operation][]s will be obsolete after 1 day, and |
| // [GetOperation][] API will return NOT_FOUND afterwards. |
| // |
| // If conflicting updates are issued, the [Operation][]s associated with the |
| // stale updates will not be marked as [done][Operation.done] until being |
| // obsolete. |
| // |
| // This feature is only available for users who have Retail Search enabled. |
| // Please enable Retail Search on Cloud Console before using this feature. |
| SetInventory(context.Context, *SetInventoryRequest) (*longrunning.Operation, error) |
| // Incrementally adds place IDs to |
| // [Product.fulfillment_info.place_ids][google.cloud.retail.v2.FulfillmentInfo.place_ids]. |
| // |
| // This process is asynchronous and does not require the |
| // [Product][google.cloud.retail.v2.Product] to exist before updating |
| // fulfillment information. If the request is valid, the update will be |
| // enqueued and processed downstream. As a consequence, when a response is |
| // returned, the added place IDs are not immediately manifested in the |
| // [Product][google.cloud.retail.v2.Product] queried by |
| // [ProductService.GetProduct][google.cloud.retail.v2.ProductService.GetProduct] |
| // or |
| // [ProductService.ListProducts][google.cloud.retail.v2.ProductService.ListProducts]. |
| // |
| // The returned [Operation][]s will be obsolete after 1 day, and |
| // [GetOperation][] API will return NOT_FOUND afterwards. |
| // |
| // If conflicting updates are issued, the [Operation][]s associated with the |
| // stale updates will not be marked as [done][Operation.done] until being |
| // obsolete. |
| // |
| // This feature is only available for users who have Retail Search enabled. |
| // Please enable Retail Search on Cloud Console before using this feature. |
| AddFulfillmentPlaces(context.Context, *AddFulfillmentPlacesRequest) (*longrunning.Operation, error) |
| // Incrementally removes place IDs from a |
| // [Product.fulfillment_info.place_ids][google.cloud.retail.v2.FulfillmentInfo.place_ids]. |
| // |
| // This process is asynchronous and does not require the |
| // [Product][google.cloud.retail.v2.Product] to exist before updating |
| // fulfillment information. If the request is valid, the update will be |
| // enqueued and processed downstream. As a consequence, when a response is |
| // returned, the removed place IDs are not immediately manifested in the |
| // [Product][google.cloud.retail.v2.Product] queried by |
| // [ProductService.GetProduct][google.cloud.retail.v2.ProductService.GetProduct] |
| // or |
| // [ProductService.ListProducts][google.cloud.retail.v2.ProductService.ListProducts]. |
| // |
| // The returned [Operation][]s will be obsolete after 1 day, and |
| // [GetOperation][] API will return NOT_FOUND afterwards. |
| // |
| // If conflicting updates are issued, the [Operation][]s associated with the |
| // stale updates will not be marked as [done][Operation.done] until being |
| // obsolete. |
| // |
| // This feature is only available for users who have Retail Search enabled. |
| // Please enable Retail Search on Cloud Console before using this feature. |
| RemoveFulfillmentPlaces(context.Context, *RemoveFulfillmentPlacesRequest) (*longrunning.Operation, error) |
| // Updates local inventory information for a |
| // [Product][google.cloud.retail.v2.Product] at a list of places, while |
| // respecting the last update timestamps of each inventory field. |
| // |
| // This process is asynchronous and does not require the |
| // [Product][google.cloud.retail.v2.Product] to exist before updating |
| // inventory information. If the request is valid, the update will be enqueued |
| // and processed downstream. As a consequence, when a response is returned, |
| // updates are not immediately manifested in the |
| // [Product][google.cloud.retail.v2.Product] queried by |
| // [ProductService.GetProduct][google.cloud.retail.v2.ProductService.GetProduct] |
| // or |
| // [ProductService.ListProducts][google.cloud.retail.v2.ProductService.ListProducts]. |
| // |
| // Local inventory information can only be modified using this method. |
| // [ProductService.CreateProduct][google.cloud.retail.v2.ProductService.CreateProduct] |
| // and |
| // [ProductService.UpdateProduct][google.cloud.retail.v2.ProductService.UpdateProduct] |
| // has no effect on local inventories. |
| // |
| // The returned [Operation][]s will be obsolete after 1 day, and |
| // [GetOperation][] API will return NOT_FOUND afterwards. |
| // |
| // If conflicting updates are issued, the [Operation][]s associated with the |
| // stale updates will not be marked as [done][Operation.done] until being |
| // obsolete. |
| // |
| // This feature is only available for users who have Retail Search enabled. |
| // Please enable Retail Search on Cloud Console before using this feature. |
| AddLocalInventories(context.Context, *AddLocalInventoriesRequest) (*longrunning.Operation, error) |
| // Remove local inventory information for a |
| // [Product][google.cloud.retail.v2.Product] at a list of places at a removal |
| // timestamp. |
| // |
| // This process is asynchronous. If the request is valid, the removal will be |
| // enqueued and processed downstream. As a consequence, when a response is |
| // returned, removals are not immediately manifested in the |
| // [Product][google.cloud.retail.v2.Product] queried by |
| // [ProductService.GetProduct][google.cloud.retail.v2.ProductService.GetProduct] |
| // or |
| // [ProductService.ListProducts][google.cloud.retail.v2.ProductService.ListProducts]. |
| // |
| // Local inventory information can only be removed using this method. |
| // [ProductService.CreateProduct][google.cloud.retail.v2.ProductService.CreateProduct] |
| // and |
| // [ProductService.UpdateProduct][google.cloud.retail.v2.ProductService.UpdateProduct] |
| // has no effect on local inventories. |
| // |
| // The returned [Operation][]s will be obsolete after 1 day, and |
| // [GetOperation][] API will return NOT_FOUND afterwards. |
| // |
| // If conflicting updates are issued, the [Operation][]s associated with the |
| // stale updates will not be marked as [done][Operation.done] until being |
| // obsolete. |
| // |
| // This feature is only available for users who have Retail Search enabled. |
| // Please enable Retail Search on Cloud Console before using this feature. |
| RemoveLocalInventories(context.Context, *RemoveLocalInventoriesRequest) (*longrunning.Operation, error) |
| } |
| |
| // UnimplementedProductServiceServer can be embedded to have forward compatible implementations. |
| type UnimplementedProductServiceServer struct { |
| } |
| |
| func (*UnimplementedProductServiceServer) CreateProduct(context.Context, *CreateProductRequest) (*Product, error) { |
| return nil, status.Errorf(codes.Unimplemented, "method CreateProduct not implemented") |
| } |
| func (*UnimplementedProductServiceServer) GetProduct(context.Context, *GetProductRequest) (*Product, error) { |
| return nil, status.Errorf(codes.Unimplemented, "method GetProduct not implemented") |
| } |
| func (*UnimplementedProductServiceServer) ListProducts(context.Context, *ListProductsRequest) (*ListProductsResponse, error) { |
| return nil, status.Errorf(codes.Unimplemented, "method ListProducts not implemented") |
| } |
| func (*UnimplementedProductServiceServer) UpdateProduct(context.Context, *UpdateProductRequest) (*Product, error) { |
| return nil, status.Errorf(codes.Unimplemented, "method UpdateProduct not implemented") |
| } |
| func (*UnimplementedProductServiceServer) DeleteProduct(context.Context, *DeleteProductRequest) (*empty.Empty, error) { |
| return nil, status.Errorf(codes.Unimplemented, "method DeleteProduct not implemented") |
| } |
| func (*UnimplementedProductServiceServer) ImportProducts(context.Context, *ImportProductsRequest) (*longrunning.Operation, error) { |
| return nil, status.Errorf(codes.Unimplemented, "method ImportProducts not implemented") |
| } |
| func (*UnimplementedProductServiceServer) SetInventory(context.Context, *SetInventoryRequest) (*longrunning.Operation, error) { |
| return nil, status.Errorf(codes.Unimplemented, "method SetInventory not implemented") |
| } |
| func (*UnimplementedProductServiceServer) AddFulfillmentPlaces(context.Context, *AddFulfillmentPlacesRequest) (*longrunning.Operation, error) { |
| return nil, status.Errorf(codes.Unimplemented, "method AddFulfillmentPlaces not implemented") |
| } |
| func (*UnimplementedProductServiceServer) RemoveFulfillmentPlaces(context.Context, *RemoveFulfillmentPlacesRequest) (*longrunning.Operation, error) { |
| return nil, status.Errorf(codes.Unimplemented, "method RemoveFulfillmentPlaces not implemented") |
| } |
| func (*UnimplementedProductServiceServer) AddLocalInventories(context.Context, *AddLocalInventoriesRequest) (*longrunning.Operation, error) { |
| return nil, status.Errorf(codes.Unimplemented, "method AddLocalInventories not implemented") |
| } |
| func (*UnimplementedProductServiceServer) RemoveLocalInventories(context.Context, *RemoveLocalInventoriesRequest) (*longrunning.Operation, error) { |
| return nil, status.Errorf(codes.Unimplemented, "method RemoveLocalInventories not implemented") |
| } |
| |
| func RegisterProductServiceServer(s *grpc.Server, srv ProductServiceServer) { |
| s.RegisterService(&_ProductService_serviceDesc, srv) |
| } |
| |
| func _ProductService_CreateProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(CreateProductRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductServiceServer).CreateProduct(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.retail.v2.ProductService/CreateProduct", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductServiceServer).CreateProduct(ctx, req.(*CreateProductRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| func _ProductService_GetProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(GetProductRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductServiceServer).GetProduct(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.retail.v2.ProductService/GetProduct", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductServiceServer).GetProduct(ctx, req.(*GetProductRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| func _ProductService_ListProducts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(ListProductsRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductServiceServer).ListProducts(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.retail.v2.ProductService/ListProducts", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductServiceServer).ListProducts(ctx, req.(*ListProductsRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| func _ProductService_UpdateProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(UpdateProductRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductServiceServer).UpdateProduct(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.retail.v2.ProductService/UpdateProduct", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductServiceServer).UpdateProduct(ctx, req.(*UpdateProductRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| func _ProductService_DeleteProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(DeleteProductRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductServiceServer).DeleteProduct(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.retail.v2.ProductService/DeleteProduct", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductServiceServer).DeleteProduct(ctx, req.(*DeleteProductRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| func _ProductService_ImportProducts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(ImportProductsRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductServiceServer).ImportProducts(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.retail.v2.ProductService/ImportProducts", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductServiceServer).ImportProducts(ctx, req.(*ImportProductsRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| func _ProductService_SetInventory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(SetInventoryRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductServiceServer).SetInventory(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.retail.v2.ProductService/SetInventory", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductServiceServer).SetInventory(ctx, req.(*SetInventoryRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| func _ProductService_AddFulfillmentPlaces_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(AddFulfillmentPlacesRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductServiceServer).AddFulfillmentPlaces(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.retail.v2.ProductService/AddFulfillmentPlaces", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductServiceServer).AddFulfillmentPlaces(ctx, req.(*AddFulfillmentPlacesRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| func _ProductService_RemoveFulfillmentPlaces_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(RemoveFulfillmentPlacesRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductServiceServer).RemoveFulfillmentPlaces(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.retail.v2.ProductService/RemoveFulfillmentPlaces", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductServiceServer).RemoveFulfillmentPlaces(ctx, req.(*RemoveFulfillmentPlacesRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| func _ProductService_AddLocalInventories_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(AddLocalInventoriesRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductServiceServer).AddLocalInventories(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.retail.v2.ProductService/AddLocalInventories", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductServiceServer).AddLocalInventories(ctx, req.(*AddLocalInventoriesRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| func _ProductService_RemoveLocalInventories_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(RemoveLocalInventoriesRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductServiceServer).RemoveLocalInventories(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.retail.v2.ProductService/RemoveLocalInventories", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductServiceServer).RemoveLocalInventories(ctx, req.(*RemoveLocalInventoriesRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| var _ProductService_serviceDesc = grpc.ServiceDesc{ |
| ServiceName: "google.cloud.retail.v2.ProductService", |
| HandlerType: (*ProductServiceServer)(nil), |
| Methods: []grpc.MethodDesc{ |
| { |
| MethodName: "CreateProduct", |
| Handler: _ProductService_CreateProduct_Handler, |
| }, |
| { |
| MethodName: "GetProduct", |
| Handler: _ProductService_GetProduct_Handler, |
| }, |
| { |
| MethodName: "ListProducts", |
| Handler: _ProductService_ListProducts_Handler, |
| }, |
| { |
| MethodName: "UpdateProduct", |
| Handler: _ProductService_UpdateProduct_Handler, |
| }, |
| { |
| MethodName: "DeleteProduct", |
| Handler: _ProductService_DeleteProduct_Handler, |
| }, |
| { |
| MethodName: "ImportProducts", |
| Handler: _ProductService_ImportProducts_Handler, |
| }, |
| { |
| MethodName: "SetInventory", |
| Handler: _ProductService_SetInventory_Handler, |
| }, |
| { |
| MethodName: "AddFulfillmentPlaces", |
| Handler: _ProductService_AddFulfillmentPlaces_Handler, |
| }, |
| { |
| MethodName: "RemoveFulfillmentPlaces", |
| Handler: _ProductService_RemoveFulfillmentPlaces_Handler, |
| }, |
| { |
| MethodName: "AddLocalInventories", |
| Handler: _ProductService_AddLocalInventories_Handler, |
| }, |
| { |
| MethodName: "RemoveLocalInventories", |
| Handler: _ProductService_RemoveLocalInventories_Handler, |
| }, |
| }, |
| Streams: []grpc.StreamDesc{}, |
| Metadata: "google/cloud/retail/v2/product_service.proto", |
| } |