@google-shopping/lfp 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.
Files changed (29) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE +202 -0
  3. package/README.md +200 -0
  4. package/build/protos/google/shopping/merchant/lfp/v1beta/lfpinventory.proto +149 -0
  5. package/build/protos/google/shopping/merchant/lfp/v1beta/lfpsale.proto +122 -0
  6. package/build/protos/google/shopping/merchant/lfp/v1beta/lfpstore.proto +249 -0
  7. package/build/protos/google/shopping/type/types.proto +169 -0
  8. package/build/protos/protos.d.ts +8673 -0
  9. package/build/protos/protos.js +23511 -0
  10. package/build/protos/protos.json +2617 -0
  11. package/build/src/index.d.ts +17 -0
  12. package/build/src/index.js +37 -0
  13. package/build/src/index.js.map +1 -0
  14. package/build/src/v1beta/index.d.ts +3 -0
  15. package/build/src/v1beta/index.js +27 -0
  16. package/build/src/v1beta/index.js.map +1 -0
  17. package/build/src/v1beta/lfp_inventory_service_client.d.ts +267 -0
  18. package/build/src/v1beta/lfp_inventory_service_client.js +472 -0
  19. package/build/src/v1beta/lfp_inventory_service_client.js.map +1 -0
  20. package/build/src/v1beta/lfp_inventory_service_client_config.json +43 -0
  21. package/build/src/v1beta/lfp_sale_service_client.d.ts +250 -0
  22. package/build/src/v1beta/lfp_sale_service_client.js +450 -0
  23. package/build/src/v1beta/lfp_sale_service_client.js.map +1 -0
  24. package/build/src/v1beta/lfp_sale_service_client_config.json +43 -0
  25. package/build/src/v1beta/lfp_store_service_client.d.ts +430 -0
  26. package/build/src/v1beta/lfp_store_service_client.js +645 -0
  27. package/build/src/v1beta/lfp_store_service_client.js.map +1 -0
  28. package/build/src/v1beta/lfp_store_service_client_config.json +58 -0
  29. package/package.json +70 -0
@@ -0,0 +1,122 @@
1
+ // Copyright 2023 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.lfp.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/field_info.proto";
23
+ import "google/api/resource.proto";
24
+ import "google/protobuf/timestamp.proto";
25
+ import "google/shopping/type/types.proto";
26
+
27
+ option go_package = "cloud.google.com/go/shopping/merchant/lfp/apiv1beta/lfppb;lfppb";
28
+ option java_multiple_files = true;
29
+ option java_outer_classname = "LfpSaleProto";
30
+ option java_package = "com.google.shopping.merchant.lfp.v1beta";
31
+
32
+ // Service for a [LFP
33
+ // partner](https://support.google.com/merchants/answer/7676652) to submit sales
34
+ // data for a merchant.
35
+ service LfpSaleService {
36
+ option (google.api.default_host) = "merchantapi.googleapis.com";
37
+ option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/content";
38
+
39
+ // Inserts a `LfpSale` for the given merchant.
40
+ rpc InsertLfpSale(InsertLfpSaleRequest) returns (LfpSale) {
41
+ option (google.api.http) = {
42
+ post: "/lfp/v1beta/{parent=accounts/*}/lfpSales:insert"
43
+ body: "lfp_sale"
44
+ };
45
+ }
46
+ }
47
+
48
+ // A sale for the merchant.
49
+ message LfpSale {
50
+ option (google.api.resource) = {
51
+ type: "merchantapi.googleapis.com/LfpSale"
52
+ pattern: "accounts/{account}/lfpSales/{sale}"
53
+ plural: "lfpSales"
54
+ singular: "lfpSale"
55
+ };
56
+
57
+ // Output only. Identifier. The name of the `LfpSale` resource.
58
+ // Format:
59
+ // `accounts/{account}/lfpSales/{sale}`
60
+ string name = 1 [
61
+ (google.api.field_behavior) = OUTPUT_ONLY,
62
+ (google.api.field_behavior) = IDENTIFIER
63
+ ];
64
+
65
+ // Required. The Merchant Center ID of the merchant to submit the sale for.
66
+ int64 target_account = 2 [(google.api.field_behavior) = REQUIRED];
67
+
68
+ // Required. The identifier of the merchant's store. Either a `storeCode`
69
+ // inserted through the API or the code of the store in the Business Profile.
70
+ string store_code = 3 [(google.api.field_behavior) = REQUIRED];
71
+
72
+ // Required. A unique identifier for the product. If both inventories and
73
+ // sales are submitted for a merchant, this id should match for the same
74
+ // product.
75
+ //
76
+ // **Note**: if the merchant sells the same product new and used, they should
77
+ // have different IDs.
78
+ string offer_id = 4 [(google.api.field_behavior) = REQUIRED];
79
+
80
+ // Required. The [CLDR territory
81
+ // code](https://github.com/unicode-org/cldr/blob/latest/common/main/en.xml)
82
+ // for the country where the product is sold.
83
+ string region_code = 5 [(google.api.field_behavior) = REQUIRED];
84
+
85
+ // Required. The two-letter ISO 639-1 language code for the item.
86
+ string content_language = 6 [(google.api.field_behavior) = REQUIRED];
87
+
88
+ // Required. The Global Trade Item Number of the sold product.
89
+ string gtin = 7 [(google.api.field_behavior) = REQUIRED];
90
+
91
+ // Required. The unit price of the product.
92
+ google.shopping.type.Price price = 8 [(google.api.field_behavior) = REQUIRED];
93
+
94
+ // Required. The relative change of the available quantity. Negative for items
95
+ // returned.
96
+ int64 quantity = 9 [(google.api.field_behavior) = REQUIRED];
97
+
98
+ // Required. The timestamp for the sale.
99
+ google.protobuf.Timestamp sale_time = 10
100
+ [(google.api.field_behavior) = REQUIRED];
101
+
102
+ // Output only. System generated globally unique ID for the `LfpSale`.
103
+ optional string uid = 11 [
104
+ (google.api.field_info).format = UUID4,
105
+ (google.api.field_behavior) = OUTPUT_ONLY
106
+ ];
107
+
108
+ // Optional. The [feed
109
+ // label](https://developers.google.com/shopping-content/guides/products/feed-labels)
110
+ // for the product. If this is not set, it will default to `regionCode`.
111
+ optional string feed_label = 12 [(google.api.field_behavior) = OPTIONAL];
112
+ }
113
+
114
+ // Request message for the InsertLfpSale method.
115
+ message InsertLfpSaleRequest {
116
+ // Required. The LFP provider account.
117
+ // Format: `accounts/{lfp_partner}`
118
+ string parent = 1 [(google.api.field_behavior) = REQUIRED];
119
+
120
+ // Required. The sale to insert.
121
+ LfpSale lfp_sale = 2 [(google.api.field_behavior) = REQUIRED];
122
+ }
@@ -0,0 +1,249 @@
1
+ // Copyright 2023 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.lfp.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
+
25
+ option go_package = "cloud.google.com/go/shopping/merchant/lfp/apiv1beta/lfppb;lfppb";
26
+ option java_multiple_files = true;
27
+ option java_outer_classname = "LfpStoreProto";
28
+ option java_package = "com.google.shopping.merchant.lfp.v1beta";
29
+
30
+ // Service for a [LFP
31
+ // partner](https://support.google.com/merchants/answer/7676652) to submit local
32
+ // stores for a merchant.
33
+ service LfpStoreService {
34
+ option (google.api.default_host) = "merchantapi.googleapis.com";
35
+ option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/content";
36
+
37
+ // Retrieves information about a store.
38
+ rpc GetLfpStore(GetLfpStoreRequest) returns (LfpStore) {
39
+ option (google.api.http) = {
40
+ get: "/lfp/v1beta/{name=accounts/*/lfpStores/*}"
41
+ };
42
+ option (google.api.method_signature) = "name";
43
+ }
44
+
45
+ // Inserts a store for the target merchant. If the store with the same store
46
+ // code already exists, it will be replaced.
47
+ rpc InsertLfpStore(InsertLfpStoreRequest) returns (LfpStore) {
48
+ option (google.api.http) = {
49
+ post: "/lfp/v1beta/{parent=accounts/*}/lfpStores:insert"
50
+ body: "lfp_store"
51
+ };
52
+ option (google.api.method_signature) = "parent,lfp_store";
53
+ }
54
+
55
+ // Deletes a store for a target merchant.
56
+ rpc DeleteLfpStore(DeleteLfpStoreRequest) returns (google.protobuf.Empty) {
57
+ option (google.api.http) = {
58
+ delete: "/lfp/v1beta/{name=accounts/*/lfpStores/*}"
59
+ };
60
+ option (google.api.method_signature) = "name";
61
+ }
62
+
63
+ // Lists the stores of the target merchant, specified by the filter in
64
+ // `ListLfpStoresRequest`.
65
+ rpc ListLfpStores(ListLfpStoresRequest) returns (ListLfpStoresResponse) {
66
+ option (google.api.http) = {
67
+ get: "/lfp/v1beta/{parent=accounts/*}/lfpStores"
68
+ };
69
+ option (google.api.method_signature) = "parent";
70
+ }
71
+ }
72
+
73
+ // A store for the merchant. This will be used to match to a Google Business
74
+ // Profile listing for the target merchant. If a matching listing can't be
75
+ // found, the inventories or sales submitted with the store code will not be
76
+ // used.
77
+ message LfpStore {
78
+ option (google.api.resource) = {
79
+ type: "merchantapi.googleapis.com/LfpStore"
80
+ pattern: "accounts/{account}/lfpStores/{target_merchant}~{store_code}"
81
+ plural: "lfpStores"
82
+ singular: "lfpStore"
83
+ };
84
+
85
+ // The state of matching `LfpStore` to a Google Business Profile listing.
86
+ enum StoreMatchingState {
87
+ // Store matching state unspecified.
88
+ STORE_MATCHING_STATE_UNSPECIFIED = 0;
89
+
90
+ // The `LfpStore` is successfully matched with a Google Business Profile
91
+ // store.
92
+ STORE_MATCHING_STATE_MATCHED = 1;
93
+
94
+ // The `LfpStore` is not matched with a Google Business Profile store.
95
+ STORE_MATCHING_STATE_FAILED = 2;
96
+ }
97
+
98
+ // Output only. Identifier. The name of the `LfpStore` resource.
99
+ // Format: `accounts/{account}/lfpStores/{target_merchant}~{store_code}`
100
+ string name = 1 [
101
+ (google.api.field_behavior) = OUTPUT_ONLY,
102
+ (google.api.field_behavior) = IDENTIFIER
103
+ ];
104
+
105
+ // Required. The Merchant Center id of the merchant to submit the store for.
106
+ int64 target_account = 2 [(google.api.field_behavior) = REQUIRED];
107
+
108
+ // Required. Immutable. A store identifier that is unique for the target
109
+ // merchant.
110
+ string store_code = 3 [
111
+ (google.api.field_behavior) = REQUIRED,
112
+ (google.api.field_behavior) = IMMUTABLE
113
+ ];
114
+
115
+ // Required. The street address of the store.
116
+ // Example: 1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA.
117
+ string store_address = 4 [(google.api.field_behavior) = REQUIRED];
118
+
119
+ // Optional. The merchant or store name.
120
+ optional string store_name = 5 [(google.api.field_behavior) = OPTIONAL];
121
+
122
+ // Optional. The store phone number in
123
+ // [E.164](https://en.wikipedia.org/wiki/E.164) format. Example:
124
+ // `+15556767888`
125
+ optional string phone_number = 6 [(google.api.field_behavior) = OPTIONAL];
126
+
127
+ // Optional. The website URL for the store or merchant.
128
+ optional string website_uri = 7 [(google.api.field_behavior) = OPTIONAL];
129
+
130
+ // Optional. [Google My Business category
131
+ // id](https://gcid-explorer.corp.google.com/static/gcid.html).
132
+ repeated string gcid_category = 8 [(google.api.field_behavior) = OPTIONAL];
133
+
134
+ // Optional. The [Google Place
135
+ // Id](https://developers.google.com/maps/documentation/places/web-service/place-id#id-overview)
136
+ // of the store location.
137
+ optional string place_id = 9 [(google.api.field_behavior) = OPTIONAL];
138
+
139
+ // Optional. Output only. The state of matching to a Google Business Profile
140
+ // listing. See
141
+ // [matchingStateHint][google.shopping.merchant.lfp.v1beta.LfpStore.matching_state_hint]
142
+ // for further details if no match is found.
143
+ StoreMatchingState matching_state = 10 [
144
+ (google.api.field_behavior) = OPTIONAL,
145
+ (google.api.field_behavior) = OUTPUT_ONLY
146
+ ];
147
+
148
+ // Optional. Output only. The hint of why the matching has failed. This is
149
+ // only set when
150
+ // [matchingState][google.shopping.merchant.lfp.v1beta.LfpStore.matching_state]=`STORE_MATCHING_STATE_FAILED`.
151
+ //
152
+ // Possible values are:
153
+ //
154
+ // - "`linked-store-not-found`": There aren't any Google Business
155
+ // Profile stores available for matching.
156
+ // - "`store-match-not-found`": The provided `LfpStore` couldn't be matched to
157
+ // any of the connected Google Business Profile stores. Merchant Center
158
+ // account is connected correctly and stores are available on Google Business
159
+ // Profile, but the `LfpStore` location address does not match with Google
160
+ // Business Profile stores' addresses. Update the `LfpStore` address or Google
161
+ // Business Profile store address to match correctly.
162
+ // - "`store-match-unverified`": The provided `LfpStore` couldn't be matched
163
+ // to any of the connected Google Business Profile stores, as the matched
164
+ // Google Business Profile store is unverified. Go through the Google Business
165
+ // Profile verification process to match correctly.
166
+ optional string matching_state_hint = 11 [
167
+ (google.api.field_behavior) = OPTIONAL,
168
+ (google.api.field_behavior) = OUTPUT_ONLY
169
+ ];
170
+ }
171
+
172
+ // Request message for the `GetLfpStore` method.
173
+ message GetLfpStoreRequest {
174
+ // Required. The name of the store to retrieve.
175
+ // Format: `accounts/{account}/lfpStores/{target_merchant}~{store_code}`
176
+ string name = 1 [
177
+ (google.api.field_behavior) = REQUIRED,
178
+ (google.api.resource_reference) = {
179
+ type: "merchantapi.googleapis.com/LfpStore"
180
+ }
181
+ ];
182
+ }
183
+
184
+ // Request message for the InsertLfpStore method.
185
+ message InsertLfpStoreRequest {
186
+ // Required. The LFP provider account
187
+ // Format: `accounts/{account}`
188
+ string parent = 1 [
189
+ (google.api.field_behavior) = REQUIRED,
190
+ (google.api.resource_reference) = {
191
+ child_type: "merchantapi.googleapis.com/LfpStore"
192
+ }
193
+ ];
194
+
195
+ // Required. The store to insert.
196
+ LfpStore lfp_store = 2 [(google.api.field_behavior) = REQUIRED];
197
+ }
198
+
199
+ // Request message for the DeleteLfpStore method.
200
+ message DeleteLfpStoreRequest {
201
+ // Required. The name of the store to delete for the target merchant account.
202
+ // Format: `accounts/{account}/lfpStores/{target_merchant}~{store_code}`
203
+ string name = 1 [
204
+ (google.api.field_behavior) = REQUIRED,
205
+ (google.api.resource_reference) = {
206
+ type: "merchantapi.googleapis.com/LfpStore"
207
+ }
208
+ ];
209
+ }
210
+
211
+ // Request message for the ListLfpStores method.
212
+ message ListLfpStoresRequest {
213
+ // Required. The LFP partner.
214
+ // Format: `accounts/{account}`
215
+ string parent = 1 [
216
+ (google.api.field_behavior) = REQUIRED,
217
+ (google.api.resource_reference) = {
218
+ child_type: "merchantapi.googleapis.com/LfpStore"
219
+ }
220
+ ];
221
+
222
+ // Required. The Merchant Center id of the merchant to list stores for.
223
+ int64 target_account = 2 [(google.api.field_behavior) = REQUIRED];
224
+
225
+ // Optional. The maximum number of `LfpStore` resources for the given account
226
+ // to return. The service returns fewer than this value if the number of
227
+ // stores for the given account is less than the `pageSize`. The default value
228
+ // is 250. The maximum value is 1000; If a value higher than the maximum is
229
+ // specified, then the `pageSize` will default to the maximum.
230
+ int32 page_size = 3 [(google.api.field_behavior) = OPTIONAL];
231
+
232
+ // Optional. A page token, received from a previous `ListLfpStoresRequest`
233
+ // call. Provide the page token to retrieve the subsequent page. When
234
+ // paginating, all other parameters provided to `ListLfpStoresRequest` must
235
+ // match the call that provided the page token. The token returned as
236
+ // [nextPageToken][google.shopping.merchant.lfp.v1beta.ListLfpStoresResponse.next_page_token]
237
+ // in the response to the previous request.
238
+ string page_token = 4 [(google.api.field_behavior) = OPTIONAL];
239
+ }
240
+
241
+ // Response message for the ListLfpStores method.
242
+ message ListLfpStoresResponse {
243
+ // The stores from the specified merchant.
244
+ repeated LfpStore lfp_stores = 1;
245
+
246
+ // A token, which can be sent as `pageToken` to retrieve the next page.
247
+ // If this field is omitted, there are no subsequent pages.
248
+ string next_page_token = 2;
249
+ }
@@ -0,0 +1,169 @@
1
+ // Copyright 2023 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.type;
18
+
19
+ option csharp_namespace = "Google.Shopping.Type";
20
+ option go_package = "cloud.google.com/go/shopping/type/typepb;typepb";
21
+ option java_multiple_files = true;
22
+ option java_outer_classname = "TypesProto";
23
+ option java_package = "com.google.shopping.type";
24
+
25
+ // The price represented as a number and currency.
26
+ message Price {
27
+ // The price represented as a number in micros (1 million micros is an
28
+ // equivalent to one's currency standard unit, for example, 1 USD = 1000000
29
+ // micros).
30
+ // This field can also be set as infinity by setting to -1.
31
+ // This field only support -1 and positive value.
32
+ optional int64 amount_micros = 1;
33
+
34
+ // The currency of the price using three-letter acronyms according to [ISO
35
+ // 4217](http://en.wikipedia.org/wiki/ISO_4217).
36
+ optional string currency_code = 2;
37
+ }
38
+
39
+ // A message that represents custom attributes. Exactly one of `value` or
40
+ // `group_values` must not be empty.
41
+ message CustomAttribute {
42
+ // The name of the attribute.
43
+ optional string name = 1;
44
+
45
+ // The value of the attribute. If `value` is not empty, `group_values` must be
46
+ // empty.
47
+ optional string value = 2;
48
+
49
+ // Subattributes within this attribute group. If
50
+ // `group_values` is not empty, `value` must be empty.
51
+ repeated CustomAttribute group_values = 3;
52
+ }
53
+
54
+ // Destinations available for a product.
55
+ //
56
+ // Destinations are used in Merchant Center to allow you to control where the
57
+ // products from your data feed should be displayed.
58
+ //
59
+ message Destination {
60
+ // Destination values.
61
+ enum DestinationEnum {
62
+ // Not specified.
63
+ DESTINATION_ENUM_UNSPECIFIED = 0;
64
+
65
+ // [Shopping ads](https://support.google.com/google-ads/answer/2454022).
66
+ SHOPPING_ADS = 1;
67
+
68
+ // [Display ads](https://support.google.com/merchants/answer/6069387).
69
+ DISPLAY_ADS = 2;
70
+
71
+ // [Local inventory
72
+ // ads](https://support.google.com/merchants/answer/3057972).
73
+ LOCAL_INVENTORY_ADS = 3;
74
+
75
+ // [Free listings](https://support.google.com/merchants/answer/9199328).
76
+ FREE_LISTINGS = 4;
77
+
78
+ // [Free local product
79
+ // listings](https://support.google.com/merchants/answer/9825611).
80
+ FREE_LOCAL_LISTINGS = 5;
81
+
82
+ // [YouTube Shopping](https://support.google.com/merchants/answer/12362804).
83
+ YOUTUBE_SHOPPING = 6;
84
+ }
85
+ }
86
+
87
+ // Reporting contexts that your account and product issues apply to.
88
+ //
89
+ // Reporting contexts are groups of surfaces and formats for product results on
90
+ // Google. They can represent the entire destination (for example, [Shopping
91
+ // ads](https://support.google.com/merchants/answer/6149970)) or a subset of
92
+ // formats within a destination (for example, [Demand Gen
93
+ // ads](https://support.google.com/merchants/answer/13389785)).
94
+ //
95
+ message ReportingContext {
96
+ // Reporting context values.
97
+ enum ReportingContextEnum {
98
+ // Not specified.
99
+ REPORTING_CONTEXT_ENUM_UNSPECIFIED = 0;
100
+
101
+ // [Shopping ads](https://support.google.com/merchants/answer/6149970).
102
+ SHOPPING_ADS = 1;
103
+
104
+ // Deprecated: Use `DEMAND_GEN_ADS` instead.
105
+ // [Discovery and Demand Gen
106
+ // ads](https://support.google.com/merchants/answer/13389785).
107
+ DISCOVERY_ADS = 2 [deprecated = true];
108
+
109
+ // [Demand Gen ads](https://support.google.com/merchants/answer/13389785).
110
+ DEMAND_GEN_ADS = 13;
111
+
112
+ // [Demand Gen ads on Discover
113
+ // surface](https://support.google.com/merchants/answer/13389785).
114
+ DEMAND_GEN_ADS_DISCOVER_SURFACE = 14;
115
+
116
+ // [Video ads](https://support.google.com/google-ads/answer/6340491).
117
+ VIDEO_ADS = 3;
118
+
119
+ // [Display ads](https://support.google.com/merchants/answer/6069387).
120
+ DISPLAY_ADS = 4;
121
+
122
+ // [Local inventory
123
+ // ads](https://support.google.com/merchants/answer/3271956).
124
+ LOCAL_INVENTORY_ADS = 5;
125
+
126
+ // [Vehicle inventory
127
+ // ads](https://support.google.com/merchants/answer/11544533).
128
+ VEHICLE_INVENTORY_ADS = 6;
129
+
130
+ // [Free product
131
+ // listings](https://support.google.com/merchants/answer/9199328).
132
+ FREE_LISTINGS = 7;
133
+
134
+ // [Free local product
135
+ // listings](https://support.google.com/merchants/answer/9825611).
136
+ FREE_LOCAL_LISTINGS = 8;
137
+
138
+ // [Free local vehicle
139
+ // listings](https://support.google.com/merchants/answer/11544533).
140
+ FREE_LOCAL_VEHICLE_LISTINGS = 9;
141
+
142
+ // [YouTube
143
+ // Shopping](https://support.google.com/merchants/answer/13478370).
144
+ YOUTUBE_SHOPPING = 10;
145
+
146
+ // [Cloud retail](https://cloud.google.com/solutions/retail).
147
+ CLOUD_RETAIL = 11;
148
+
149
+ // [Local cloud retail](https://cloud.google.com/solutions/retail).
150
+ LOCAL_CLOUD_RETAIL = 12;
151
+ }
152
+ }
153
+
154
+ // [Channel](https://support.google.com/merchants/answer/7361332) of a product.
155
+ //
156
+ // Channel is used to distinguish between online and local products.
157
+ message Channel {
158
+ // Channel values.
159
+ enum ChannelEnum {
160
+ // Not specified.
161
+ CHANNEL_ENUM_UNSPECIFIED = 0;
162
+
163
+ // Online product.
164
+ ONLINE = 1;
165
+
166
+ // Local product.
167
+ LOCAL = 2;
168
+ }
169
+ }