@google-shopping/reviews 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,187 @@
1
+ // Copyright 2024 Google LLC
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ syntax = "proto3";
16
+
17
+ package google.shopping.merchant.reviews.v1beta;
18
+
19
+ import "google/api/field_behavior.proto";
20
+ import "google/protobuf/timestamp.proto";
21
+ import "google/shopping/type/types.proto";
22
+
23
+ option csharp_namespace = "Google.Shopping.Merchant.Reviews.V1Beta";
24
+ option go_package = "cloud.google.com/go/shopping/merchant/reviews/apiv1beta/reviewspb;reviewspb";
25
+ option java_multiple_files = true;
26
+ option java_outer_classname = "MerchantReviewsCommonProto";
27
+ option java_package = "com.google.shopping.merchant.reviews.v1beta";
28
+ option php_namespace = "Google\\Shopping\\Merchant\\Reviews\\V1beta";
29
+ option ruby_package = "Google::Shopping::Merchant::Reviews::V1beta";
30
+
31
+ // Attributes.
32
+ message MerchantReviewAttributes {
33
+ // The method used to collect the review.
34
+ enum CollectionMethod {
35
+ // Collection method unspecified.
36
+ COLLECTION_METHOD_UNSPECIFIED = 0;
37
+
38
+ // The user was not responding to a specific solicitation when they
39
+ // submitted the review.
40
+ MERCHANT_UNSOLICITED = 1;
41
+
42
+ // The user submitted the review in response to a solicitation when the
43
+ // user placed an order.
44
+ POINT_OF_SALE = 2;
45
+
46
+ // The user submitted the review in response to a solicitation after
47
+ // fulfillment of the user's order.
48
+ AFTER_FULFILLMENT = 3;
49
+ }
50
+
51
+ // Required. Must be unique and stable across all requests. In other words, if
52
+ // a request today and another 90 days ago refer to the same merchant, they
53
+ // must have the same id.
54
+ optional string merchant_id = 1 [(google.api.field_behavior) = REQUIRED];
55
+
56
+ // Optional. Human-readable display name for the merchant.
57
+ optional string merchant_display_name = 2
58
+ [(google.api.field_behavior) = OPTIONAL];
59
+
60
+ // Optional. URL to the merchant's main website. Do not use a redirect URL for
61
+ // this value. In other words, the value should point directly to the
62
+ // merchant's site.
63
+ optional string merchant_link = 3 [(google.api.field_behavior) = OPTIONAL];
64
+
65
+ // Optional. URL to the landing page that hosts the reviews for this merchant.
66
+ // Do not use a redirect URL.
67
+ optional string merchant_rating_link = 4
68
+ [(google.api.field_behavior) = OPTIONAL];
69
+
70
+ // Optional. The minimum possible number for the rating. This should be the
71
+ // worst possible rating and should not be a value for no rating.
72
+ optional int64 min_rating = 5 [(google.api.field_behavior) = OPTIONAL];
73
+
74
+ // Optional. The maximum possible number for the rating. The value of the max
75
+ // rating must be greater than the value of the min rating.
76
+ optional int64 max_rating = 6 [(google.api.field_behavior) = OPTIONAL];
77
+
78
+ // Optional. The reviewer's overall rating of the merchant.
79
+ optional double rating = 7 [(google.api.field_behavior) = OPTIONAL];
80
+
81
+ // Optional. The title of the review.
82
+ optional string title = 8 [(google.api.field_behavior) = OPTIONAL];
83
+
84
+ // Required. This should be any freeform text provided by the user and should
85
+ // not be truncated. If multiple responses to different questions are
86
+ // provided, all responses should be included, with the minimal context for
87
+ // the responses to make sense. Context should not be provided if questions
88
+ // were left unanswered.
89
+ optional string content = 9 [(google.api.field_behavior) = REQUIRED];
90
+
91
+ // Optional. A permanent, unique identifier for the author of the review in
92
+ // the publisher's system.
93
+ optional string reviewer_id = 10 [(google.api.field_behavior) = OPTIONAL];
94
+
95
+ // Optional. Display name of the review author.
96
+ optional string reviewer_username = 11
97
+ [(google.api.field_behavior) = OPTIONAL];
98
+
99
+ // Optional. Set to true if the reviewer should remain anonymous.
100
+ optional bool is_anonymous = 12 [(google.api.field_behavior) = OPTIONAL];
101
+
102
+ // Optional. The method used to collect the review.
103
+ optional CollectionMethod collection_method = 13
104
+ [(google.api.field_behavior) = OPTIONAL];
105
+
106
+ // Required. The timestamp indicating when the review was written.
107
+ optional google.protobuf.Timestamp review_time = 14
108
+ [(google.api.field_behavior) = REQUIRED];
109
+
110
+ // Required. The language of the review defined by BCP-47 language code.
111
+ optional string review_language = 15 [(google.api.field_behavior) = REQUIRED];
112
+
113
+ // Optional. The country where the reviewer made the order defined by ISO
114
+ // 3166-1 Alpha-2 Country Code.
115
+ optional string review_country = 16 [(google.api.field_behavior) = OPTIONAL];
116
+ }
117
+
118
+ // The status of a merchant review, data validation issues, that is, information
119
+ // about a merchant review computed asynchronously.
120
+ message MerchantReviewStatus {
121
+ // The destination status of the merchant review status.
122
+ message MerchantReviewDestinationStatus {
123
+ // Output only. The name of the reporting context.
124
+ google.shopping.type.ReportingContext.ReportingContextEnum
125
+ reporting_context = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
126
+ }
127
+
128
+ // The ItemLevelIssue of the merchant review status.
129
+ message MerchantReviewItemLevelIssue {
130
+ // How the issue affects the serving of the merchant review.
131
+ enum Severity {
132
+ // Not specified.
133
+ SEVERITY_UNSPECIFIED = 0;
134
+
135
+ // This issue represents a warning and does not have a direct affect
136
+ // on the merchant review.
137
+ NOT_IMPACTED = 1;
138
+
139
+ // Issue disapproves the merchant review.
140
+ DISAPPROVED = 2;
141
+ }
142
+
143
+ // Output only. The error code of the issue.
144
+ string code = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
145
+
146
+ // Output only. How this issue affects serving of the merchant review.
147
+ Severity severity = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
148
+
149
+ // Output only. Whether the issue can be resolved by the merchant.
150
+ string resolution = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
151
+
152
+ // Output only. The attribute's name, if the issue is caused by a single
153
+ // attribute.
154
+ string attribute = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
155
+
156
+ // Output only. The reporting context the issue applies to.
157
+ google.shopping.type.ReportingContext.ReportingContextEnum
158
+ reporting_context = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
159
+
160
+ // Output only. A short issue description in English.
161
+ string description = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
162
+
163
+ // Output only. A detailed issue description in English.
164
+ string detail = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
165
+
166
+ // Output only. The URL of a web page to help with resolving this issue.
167
+ string documentation = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
168
+ }
169
+
170
+ // Output only. The intended destinations for the merchant review.
171
+ repeated MerchantReviewDestinationStatus destination_statuses = 3
172
+ [(google.api.field_behavior) = OUTPUT_ONLY];
173
+
174
+ // Output only. A list of all issues associated with the merchant review.
175
+ repeated MerchantReviewItemLevelIssue item_level_issues = 4
176
+ [(google.api.field_behavior) = OUTPUT_ONLY];
177
+
178
+ // Output only. Date on which the item has been created, in [ISO
179
+ // 8601](http://en.wikipedia.org/wiki/ISO_8601) format.
180
+ google.protobuf.Timestamp create_time = 5
181
+ [(google.api.field_behavior) = OUTPUT_ONLY];
182
+
183
+ // Output only. Date on which the item has been last updated, in [ISO
184
+ // 8601](http://en.wikipedia.org/wiki/ISO_8601) format.
185
+ google.protobuf.Timestamp last_update_time = 6
186
+ [(google.api.field_behavior) = OUTPUT_ONLY];
187
+ }
@@ -0,0 +1,181 @@
1
+ // Copyright 2024 Google LLC
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ syntax = "proto3";
16
+
17
+ package google.shopping.merchant.reviews.v1beta;
18
+
19
+ import "google/api/annotations.proto";
20
+ import "google/api/client.proto";
21
+ import "google/api/field_behavior.proto";
22
+ import "google/api/resource.proto";
23
+ import "google/protobuf/empty.proto";
24
+ import "google/shopping/merchant/reviews/v1beta/productreviews_common.proto";
25
+ import "google/shopping/type/types.proto";
26
+
27
+ option csharp_namespace = "Google.Shopping.Merchant.Reviews.V1Beta";
28
+ option go_package = "cloud.google.com/go/shopping/merchant/reviews/apiv1beta/reviewspb;reviewspb";
29
+ option java_multiple_files = true;
30
+ option java_outer_classname = "ProductReviewsProto";
31
+ option java_package = "com.google.shopping.merchant.reviews.v1beta";
32
+ option php_namespace = "Google\\Shopping\\Merchant\\Reviews\\V1beta";
33
+ option ruby_package = "Google::Shopping::Merchant::Reviews::V1beta";
34
+
35
+ // Service to manage product reviews.
36
+ service ProductReviewsService {
37
+ option (google.api.default_host) = "merchantapi.googleapis.com";
38
+ option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/content";
39
+
40
+ // Gets a product review.
41
+ rpc GetProductReview(GetProductReviewRequest) returns (ProductReview) {
42
+ option (google.api.http) = {
43
+ get: "/reviews/v1beta/{name=accounts/*/productReviews/*}"
44
+ };
45
+ option (google.api.method_signature) = "name";
46
+ }
47
+
48
+ // Lists product reviews.
49
+ rpc ListProductReviews(ListProductReviewsRequest)
50
+ returns (ListProductReviewsResponse) {
51
+ option (google.api.http) = {
52
+ get: "/reviews/v1beta/{parent=accounts/*}/productReviews"
53
+ };
54
+ option (google.api.method_signature) = "parent";
55
+ }
56
+
57
+ // Inserts a product review.
58
+ rpc InsertProductReview(InsertProductReviewRequest) returns (ProductReview) {
59
+ option (google.api.http) = {
60
+ post: "/reviews/v1beta/{parent=accounts/*}/productReviews:insert"
61
+ body: "product_review"
62
+ };
63
+ }
64
+
65
+ // Deletes a product review.
66
+ rpc DeleteProductReview(DeleteProductReviewRequest)
67
+ returns (google.protobuf.Empty) {
68
+ option (google.api.http) = {
69
+ delete: "/reviews/v1beta/{name=accounts/*/productReviews/*}"
70
+ };
71
+ option (google.api.method_signature) = "name";
72
+ }
73
+ }
74
+
75
+ // Request message for the GetProductReview method.
76
+ message GetProductReviewRequest {
77
+ // Required. The ID of the merchant review.
78
+ // Format: accounts/{account}/productReviews/{productReview}
79
+ string name = 1 [
80
+ (google.api.field_behavior) = REQUIRED,
81
+ (google.api.resource_reference) = {
82
+ type: "merchantapi.googleapis.com/ProductReview"
83
+ }
84
+ ];
85
+ }
86
+
87
+ // Request message for the `DeleteProductReview` method.
88
+ message DeleteProductReviewRequest {
89
+ // Required. The ID of the Product review.
90
+ // Format: accounts/{account}/productReviews/{productReview}
91
+ string name = 1 [
92
+ (google.api.field_behavior) = REQUIRED,
93
+ (google.api.resource_reference) = {
94
+ type: "merchantapi.googleapis.com/ProductReview"
95
+ }
96
+ ];
97
+ }
98
+
99
+ // Request message for the ListProductReviews method.
100
+ message ListProductReviewsRequest {
101
+ // Required. The account to list product reviews for.
102
+ // Format: accounts/{account}
103
+ string parent = 1 [
104
+ (google.api.field_behavior) = REQUIRED,
105
+ (google.api.resource_reference) = {
106
+ child_type: "merchantapi.googleapis.com/ProductReview"
107
+ }
108
+ ];
109
+
110
+ // Optional. The maximum number of products to return. The service may return
111
+ // fewer than this value.
112
+ int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
113
+
114
+ // Optional. A page token, received from a previous `ListProductReviews` call.
115
+ // Provide this to retrieve the subsequent page.
116
+ //
117
+ // When paginating, all other parameters provided to `ListProductReviews`
118
+ // must match the call that provided the page token.
119
+ string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
120
+ }
121
+
122
+ // Request message for the `InsertProductReview` method.
123
+ message InsertProductReviewRequest {
124
+ // Required. The account where the product review will be inserted.
125
+ // Format: accounts/{account}
126
+ string parent = 1 [(google.api.field_behavior) = REQUIRED];
127
+
128
+ // Required. The product review to insert.
129
+ ProductReview product_review = 2 [(google.api.field_behavior) = REQUIRED];
130
+
131
+ // Required. Format:
132
+ // `accounts/{account}/dataSources/{datasource}`.
133
+ string data_source = 3 [(google.api.field_behavior) = REQUIRED];
134
+ }
135
+
136
+ // response message for the ListProductReviews method.
137
+ message ListProductReviewsResponse {
138
+ // The product review.
139
+ repeated ProductReview product_reviews = 1;
140
+
141
+ // A token, which can be sent as `page_token` to retrieve the next page.
142
+ // If this field is omitted, there are no subsequent pages.
143
+ string next_page_token = 2;
144
+ }
145
+
146
+ // A review for a product. For more information, see
147
+ // [Introduction to Product Review
148
+ // Feeds](https://developers.google.com/product-review-feeds)
149
+ message ProductReview {
150
+ option (google.api.resource) = {
151
+ type: "merchantapi.googleapis.com/ProductReview"
152
+ pattern: "accounts/{account}/productReviews/{productreview}"
153
+ plural: "productReviews"
154
+ singular: "productReview"
155
+ };
156
+
157
+ // Identifier. The name of the product review.
158
+ // Format:
159
+ // `"{productreview.name=accounts/{account}/productReviews/{productReview}}"`
160
+ string name = 1 [(google.api.field_behavior) = IDENTIFIER];
161
+
162
+ // Required. The permanent, unique identifier for the product review in the
163
+ // publisher’s system.
164
+ string product_review_id = 2 [(google.api.field_behavior) = REQUIRED];
165
+
166
+ // Optional. A list of product review attributes.
167
+ ProductReviewAttributes attributes = 3
168
+ [(google.api.field_behavior) = OPTIONAL];
169
+
170
+ // Optional. A list of custom (merchant-provided) attributes.
171
+ repeated google.shopping.type.CustomAttribute custom_attributes = 4
172
+ [(google.api.field_behavior) = OPTIONAL];
173
+
174
+ // Output only. The primary data source of the product review.
175
+ string data_source = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
176
+
177
+ // Output only. The status of a product review, data validation issues, that
178
+ // is, information about a product review computed asynchronously.
179
+ ProductReviewStatus product_review_status = 6
180
+ [(google.api.field_behavior) = OUTPUT_ONLY];
181
+ }
@@ -0,0 +1,264 @@
1
+ // Copyright 2024 Google LLC
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ syntax = "proto3";
16
+
17
+ package google.shopping.merchant.reviews.v1beta;
18
+
19
+ import "google/api/field_behavior.proto";
20
+ import "google/protobuf/timestamp.proto";
21
+ import "google/shopping/type/types.proto";
22
+
23
+ option csharp_namespace = "Google.Shopping.Merchant.Reviews.V1Beta";
24
+ option go_package = "cloud.google.com/go/shopping/merchant/reviews/apiv1beta/reviewspb;reviewspb";
25
+ option java_multiple_files = true;
26
+ option java_outer_classname = "ProductReviewsCommonProto";
27
+ option java_package = "com.google.shopping.merchant.reviews.v1beta";
28
+ option php_namespace = "Google\\Shopping\\Merchant\\Reviews\\V1beta";
29
+ option ruby_package = "Google::Shopping::Merchant::Reviews::V1beta";
30
+
31
+ // Attributes.
32
+ message ProductReviewAttributes {
33
+ // The URI of the review landing page.
34
+ message ReviewLink {
35
+ // Type of the review URI.
36
+ enum Type {
37
+ // Type unspecified.
38
+ TYPE_UNSPECIFIED = 0;
39
+
40
+ // The review page contains only this single review.
41
+ SINGLETON = 1;
42
+
43
+ // The review page contains a group of reviews including this review.
44
+ GROUP = 2;
45
+ }
46
+
47
+ // Optional. Type of the review URI.
48
+ Type type = 1 [(google.api.field_behavior) = OPTIONAL];
49
+
50
+ // Optional. The URI of the review landing page.
51
+ // For example: `http://www.example.com/review_5.html`.
52
+ string link = 2 [(google.api.field_behavior) = OPTIONAL];
53
+ }
54
+
55
+ // The method used to collect the review.
56
+ enum CollectionMethod {
57
+ // Collection method unspecified.
58
+ COLLECTION_METHOD_UNSPECIFIED = 0;
59
+
60
+ // The user was not responding to a specific solicitation when they
61
+ // submitted the review.
62
+ UNSOLICITED = 1;
63
+
64
+ // The user submitted the review in response to a solicitation after
65
+ // fulfillment of the user's order.
66
+ POST_FULFILLMENT = 2;
67
+ }
68
+
69
+ // Optional. The name of the aggregator of the product reviews.
70
+ //
71
+ // A publisher may use a reviews aggregator to manage reviews and provide
72
+ // the feeds. This element indicates the use of an aggregator and contains
73
+ // information about the aggregator.
74
+ optional string aggregator_name = 1 [(google.api.field_behavior) = OPTIONAL];
75
+
76
+ // Optional. The name of the subclient of the product reviews.
77
+ //
78
+ // The subclient is an identifier of the product review source.
79
+ // It should be equivalent to the directory provided in the file data source
80
+ // path.
81
+ optional string subclient_name = 2 [(google.api.field_behavior) = OPTIONAL];
82
+
83
+ // Optional. The name of the publisher of the product reviews.
84
+ //
85
+ // The information about the publisher, which may be a retailer,
86
+ // manufacturer, reviews service company, or any entity that publishes
87
+ // product reviews.
88
+ optional string publisher_name = 3 [(google.api.field_behavior) = OPTIONAL];
89
+
90
+ // Optional. A link to the company favicon of the publisher. The image
91
+ // dimensions should be favicon size: 16x16 pixels. The image format should be
92
+ // GIF, JPG or PNG.
93
+ optional string publisher_favicon = 4
94
+ [(google.api.field_behavior) = OPTIONAL];
95
+
96
+ // Optional. The author of the product review.
97
+ //
98
+ // A permanent, unique identifier for the author of the review in the
99
+ // publisher's system.
100
+ optional string reviewer_id = 5 [(google.api.field_behavior) = OPTIONAL];
101
+
102
+ // Optional. Set to true if the reviewer should remain anonymous.
103
+ optional bool reviewer_is_anonymous = 6
104
+ [(google.api.field_behavior) = OPTIONAL];
105
+
106
+ // Optional. The name of the reviewer of the product review.
107
+ optional string reviewer_username = 7
108
+ [(google.api.field_behavior) = OPTIONAL];
109
+
110
+ // Optional. The language of the review defined by BCP-47 language code.
111
+ optional string review_language = 8 [(google.api.field_behavior) = OPTIONAL];
112
+
113
+ // Optional. The country of the review defined by ISO 3166-1 Alpha-2 Country
114
+ // Code.
115
+ optional string review_country = 9 [(google.api.field_behavior) = OPTIONAL];
116
+
117
+ // Required. The timestamp indicating when the review was written.
118
+ google.protobuf.Timestamp review_time = 10
119
+ [(google.api.field_behavior) = REQUIRED];
120
+
121
+ // Optional. The title of the review.
122
+ optional string title = 11 [(google.api.field_behavior) = OPTIONAL];
123
+
124
+ // Required. The content of the review.
125
+ optional string content = 12 [(google.api.field_behavior) = REQUIRED];
126
+
127
+ // Optional. Contains the advantages based on the opinion of the reviewer.
128
+ // Omit boilerplate text like "pro:" unless it was written by the reviewer.
129
+ repeated string pros = 13 [(google.api.field_behavior) = OPTIONAL];
130
+
131
+ // Optional. Contains the disadvantages based on the opinion of the reviewer.
132
+ // Omit boilerplate text like "con:" unless it was written by the reviewer.
133
+ repeated string cons = 14 [(google.api.field_behavior) = OPTIONAL];
134
+
135
+ // Optional. The URI of the review landing page.
136
+ ReviewLink review_link = 15 [(google.api.field_behavior) = OPTIONAL];
137
+
138
+ // Optional. A URI to an image of the reviewed product created by the review
139
+ // author. The URI does not have to end with an image file extension.
140
+ repeated string reviewer_image_links = 16
141
+ [(google.api.field_behavior) = OPTIONAL];
142
+
143
+ // Optional. Contains the ratings associated with the review.
144
+ // The minimum possible number for the rating. This should be the worst
145
+ // possible rating and should not be a value for no rating.
146
+ optional int64 min_rating = 17 [(google.api.field_behavior) = OPTIONAL];
147
+
148
+ // Optional. The maximum possible number for the rating. The value of the max
149
+ // rating must be greater than the value of the min attribute.
150
+ optional int64 max_rating = 18 [(google.api.field_behavior) = OPTIONAL];
151
+
152
+ // Optional. The reviewer's overall rating of the product.
153
+ optional double rating = 19 [(google.api.field_behavior) = OPTIONAL];
154
+
155
+ // Optional. Descriptive name of a product.
156
+ repeated string product_names = 20 [(google.api.field_behavior) = OPTIONAL];
157
+
158
+ // Optional. The URI of the product. This URI can have the same value as the
159
+ // `review_link` element, if the review URI and the product URI are the
160
+ // same.
161
+ repeated string product_links = 21 [(google.api.field_behavior) = OPTIONAL];
162
+
163
+ // Optional. Contains ASINs (Amazon Standard Identification Numbers)
164
+ // associated with a product.
165
+ repeated string asins = 22 [(google.api.field_behavior) = OPTIONAL];
166
+
167
+ // Optional. Contains GTINs (global trade item numbers) associated with a
168
+ // product. Sub-types of GTINs (e.g. UPC, EAN, ISBN, JAN) are supported.
169
+ repeated string gtins = 23 [(google.api.field_behavior) = OPTIONAL];
170
+
171
+ // Optional. Contains MPNs (manufacturer part numbers) associated with a
172
+ // product.
173
+ repeated string mpns = 24 [(google.api.field_behavior) = OPTIONAL];
174
+
175
+ // Optional. Contains SKUs (stock keeping units) associated with a product.
176
+ // Often this matches the product Offer Id in the product feed.
177
+ repeated string skus = 25 [(google.api.field_behavior) = OPTIONAL];
178
+
179
+ // Optional. Contains brand names associated with a product.
180
+ repeated string brands = 26 [(google.api.field_behavior) = OPTIONAL];
181
+
182
+ // Optional. Indicates whether the review is marked as spam in the publisher's
183
+ // system.
184
+ optional bool is_spam = 27 [(google.api.field_behavior) = OPTIONAL];
185
+
186
+ // Optional. The method used to collect the review.
187
+ CollectionMethod collection_method = 28
188
+ [(google.api.field_behavior) = OPTIONAL];
189
+
190
+ // Optional. A permanent, unique identifier for the transaction associated
191
+ // with the review in the publisher's system. This ID can be used to indicate
192
+ // that multiple reviews are associated with the same transaction.
193
+ string transaction_id = 29 [(google.api.field_behavior) = OPTIONAL];
194
+ }
195
+
196
+ // Product review status.
197
+ message ProductReviewStatus {
198
+ // The destination status of the product review status.
199
+ message ProductReviewDestinationStatus {
200
+ // Output only. The name of the reporting context.
201
+ google.shopping.type.ReportingContext.ReportingContextEnum
202
+ reporting_context = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
203
+ }
204
+
205
+ // The ItemLevelIssue of the product review status.
206
+ message ProductReviewItemLevelIssue {
207
+ // How the issue affects the serving of the product review.
208
+ enum Severity {
209
+ // Not specified.
210
+ SEVERITY_UNSPECIFIED = 0;
211
+
212
+ // This issue represents a warning and does not have a direct affect
213
+ // on the product review.
214
+ NOT_IMPACTED = 1;
215
+
216
+ // Issue disapproves the product review.
217
+ DISAPPROVED = 2;
218
+ }
219
+
220
+ // Output only. The error code of the issue.
221
+ string code = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
222
+
223
+ // Output only. How this issue affects serving of the product review.
224
+ Severity severity = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
225
+
226
+ // Output only. Whether the issue can be resolved by the merchant.
227
+ string resolution = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
228
+
229
+ // Output only. The attribute's name, if the issue is caused by a single
230
+ // attribute.
231
+ string attribute = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
232
+
233
+ // Output only. The reporting context the issue applies to.
234
+ google.shopping.type.ReportingContext.ReportingContextEnum
235
+ reporting_context = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
236
+
237
+ // Output only. A short issue description in English.
238
+ string description = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
239
+
240
+ // Output only. A detailed issue description in English.
241
+ string detail = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
242
+
243
+ // Output only. The URL of a web page to help with resolving this issue.
244
+ string documentation = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
245
+ }
246
+
247
+ // Output only. The intended destinations for the product review.
248
+ repeated ProductReviewDestinationStatus destination_statuses = 3
249
+ [(google.api.field_behavior) = OUTPUT_ONLY];
250
+
251
+ // Output only. A list of all issues associated with the product review.
252
+ repeated ProductReviewItemLevelIssue item_level_issues = 4
253
+ [(google.api.field_behavior) = OUTPUT_ONLY];
254
+
255
+ // Output only. Date on which the item has been created, in [ISO
256
+ // 8601](http://en.wikipedia.org/wiki/ISO_8601) format.
257
+ google.protobuf.Timestamp create_time = 5
258
+ [(google.api.field_behavior) = OUTPUT_ONLY];
259
+
260
+ // Output only. Date on which the item has been last updated, in [ISO
261
+ // 8601](http://en.wikipedia.org/wiki/ISO_8601) format.
262
+ google.protobuf.Timestamp last_update_time = 6
263
+ [(google.api.field_behavior) = OUTPUT_ONLY];
264
+ }