Skip to content

Commit 3a8b8dd

Browse files
Google APIscopybara-github
authored andcommitted
feat: Added the product_id_base64_url_encoded field to ListLocalInventoriesRequest, InsertLocalInventoryRequest, DeleteLocalInventoryRequest, ListRegionalInventoriesRequest, InsertRegionalInventoryRequest, and DeleteRegionalInventoryRequest. This allows for product IDs containing special characters to be correctly handled when base64url-encoded
feat: Added C#, PHP, and Ruby namespace options to LocalInventory and RegionalInventory proto files for improved client library generation docs: Updated the API summary and overview in the service configuration PiperOrigin-RevId: 830781339
1 parent 18bb600 commit 3a8b8dd

File tree

3 files changed

+122
-16
lines changed

3 files changed

+122
-16
lines changed

google/shopping/merchant/inventories/v1beta/localinventory.proto

Lines changed: 52 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,13 @@ import "google/protobuf/empty.proto";
2424
import "google/shopping/type/types.proto";
2525
import "google/type/interval.proto";
2626

27+
option csharp_namespace = "Google.Shopping.Merchant.Inventories.V1Beta";
2728
option go_package = "cloud.google.com/go/shopping/merchant/inventories/apiv1beta/inventoriespb;inventoriespb";
2829
option java_multiple_files = true;
2930
option java_outer_classname = "LocalInventoryProto";
3031
option java_package = "com.google.shopping.merchant.inventories.v1beta";
32+
option php_namespace = "Google\\Shopping\\Merchant\\Inventories\\V1beta";
33+
option ruby_package = "Google::Shopping::Merchant::Inventories::V1beta";
3134
option (google.api.resource_definition) = {
3235
type: "merchantapi.googleapis.com/Product"
3336
pattern: "accounts/{account}/products/{product}"
@@ -113,17 +116,19 @@ message LocalInventory {
113116
(google.api.field_behavior) = IMMUTABLE
114117
];
115118

116-
// Price of the product at this store.
117-
google.shopping.type.Price price = 4;
119+
// Optional. Price of the product at this store.
120+
google.shopping.type.Price price = 4 [(google.api.field_behavior) = OPTIONAL];
118121

119-
// Sale price of the product at this store. Mandatory if
122+
// Optional. Sale price of the product at this store. Mandatory if
120123
// [`salePriceEffectiveDate`][google.shopping.merchant.inventories.v1beta.LocalInventory.sale_price_effective_date]
121124
// is defined.
122-
google.shopping.type.Price sale_price = 5;
125+
google.shopping.type.Price sale_price = 5
126+
[(google.api.field_behavior) = OPTIONAL];
123127

124-
// The `TimePeriod` of the
128+
// Optional. The `TimePeriod` of the
125129
// sale at this store.
126-
google.type.Interval sale_price_effective_date = 6;
130+
google.type.Interval sale_price_effective_date = 6
131+
[(google.api.field_behavior) = OPTIONAL];
127132

128133
// Availability of the product at this store.
129134
// For accepted attribute values, see the [local product inventory data
@@ -154,7 +159,8 @@ message LocalInventory {
154159
// A list of custom (merchant-provided) attributes. You can also use
155160
// `CustomAttribute` to submit any attribute of the data specification in its
156161
// generic form.
157-
repeated google.shopping.type.CustomAttribute custom_attributes = 12;
162+
repeated google.shopping.type.CustomAttribute custom_attributes = 12
163+
[deprecated = true];
158164
}
159165

160166
// Request message for the `ListLocalInventories` method.
@@ -184,6 +190,19 @@ message ListLocalInventoriesRequest {
184190
// [nextPageToken][google.shopping.merchant.inventories.v1beta.ListLocalInventoriesResponse.next_page_token]
185191
// in the response to the previous request.
186192
string page_token = 3;
193+
194+
// Optional. If true, the `{product}` in the `parent` field of the request
195+
// will be interpreted as unpadded base64url-encoded and decoded during
196+
// request processing to match the decoded value. Default value is `false`.
197+
// Use this if your `{product}` contains special characters, such as forward
198+
// slash `/` or other characters that are unpadded base64url-encoded (as per
199+
// RFC 7515: https://datatracker.ietf.org/doc/html/rfc7515#section-2).
200+
//
201+
// Note that future versions of the API will only accept unpadded
202+
// base64url-encoded product ids, so we strongly recommend proactively setting
203+
// this to `true` and encoding the product ids.
204+
bool product_id_base64_url_encoded = 4
205+
[(google.api.field_behavior) = OPTIONAL];
187206
}
188207

189208
// Response message for the `ListLocalInventories` method.
@@ -212,6 +231,19 @@ message InsertLocalInventoryRequest {
212231
// already has a `LocalInventory` resource for the same `storeCode`, full
213232
// replacement of the `LocalInventory` resource is performed.
214233
LocalInventory local_inventory = 2 [(google.api.field_behavior) = REQUIRED];
234+
235+
// Optional. If true, the `{product}` in the `parent` field of the request
236+
// will be interpreted as unpadded base64url-encoded and decoded during
237+
// request processing to match the decoded value. Default value is `false`.
238+
// Use this if your `{product}` contains special characters, such as forward
239+
// slash `/` or other characters that are unpadded base64url-encoded (as per
240+
// RFC 7515: https://datatracker.ietf.org/doc/html/rfc7515#section-2).
241+
//
242+
// Note that future versions of the API will only accept unpadded
243+
// base64url-encoded product ids, so we strongly recommend proactively setting
244+
// this to `true` and encoding the product ids.
245+
bool product_id_base64_url_encoded = 3
246+
[(google.api.field_behavior) = OPTIONAL];
215247
}
216248

217249
// Request message for the `DeleteLocalInventory` method.
@@ -225,4 +257,17 @@ message DeleteLocalInventoryRequest {
225257
type: "merchantapi.googleapis.com/LocalInventory"
226258
}
227259
];
260+
261+
// Optional. If true, the `{product}` in the `name` field of the request will
262+
// be interpreted as unpadded base64url-encoded and decoded during request
263+
// processing to match the decoded value. Default value is `false`. Use this
264+
// if your `{product}` contains special characters, such as forward slash `/`
265+
// or other characters that are unpadded base64url-encoded (as per RFC 7515:
266+
// https://datatracker.ietf.org/doc/html/rfc7515#section-2).
267+
//
268+
// Note that future versions of the API will only accept unpadded
269+
// base64url-encoded product ids, so we strongly recommend proactively setting
270+
// this to `true` and encoding the product ids.
271+
bool product_id_base64_url_encoded = 2
272+
[(google.api.field_behavior) = OPTIONAL];
228273
}

google/shopping/merchant/inventories/v1beta/merchantapi_v1beta.yaml

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,23 @@ apis:
88
- name: google.shopping.merchant.inventories.v1beta.RegionalInventoryService
99

1010
documentation:
11-
summary: Programmatically manage your Merchant Center accounts.
11+
summary: Programmatically manage your Merchant Center Accounts.
12+
overview: |-
13+
Merchant API consists of multiple Sub-APIs. Accounts Sub-API: Enables you
14+
to programmatically manage your accounts. Conversions Sub-API: Enables you
15+
to programmatically manage your conversion sources for a merchant account.
16+
Datasources Sub-API: Enables you to programmatically manage your
17+
datasources. Inventories Sub-API: This bundle enables you to
18+
programmatically manage your local and regional inventories. Local Feeds
19+
Partnerships Sub-API: This bundle enables LFP partners to submit local
20+
inventories for a merchant. Notifications Sub-API: This bundle enables you
21+
to programmatically manage your notification subscriptions. Products
22+
Sub-API: This bundle enables you to programmatically manage your products.
23+
Promotions Sub-API: This bundle enables you to programmatically manage
24+
your promotions for products. Quota Sub-API: This bundle enables you to
25+
list your quotas for all APIs you are using. Reports Sub-API: This bundle
26+
enables you to programmatically retrieve reports and insights about
27+
products, their performance and their competitive environment.
1228
1329
authentication:
1430
rules:

google/shopping/merchant/inventories/v1beta/regionalinventory.proto

Lines changed: 53 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,13 @@ import "google/protobuf/empty.proto";
2424
import "google/shopping/type/types.proto";
2525
import "google/type/interval.proto";
2626

27+
option csharp_namespace = "Google.Shopping.Merchant.Inventories.V1Beta";
2728
option go_package = "cloud.google.com/go/shopping/merchant/inventories/apiv1beta/inventoriespb;inventoriespb";
2829
option java_multiple_files = true;
2930
option java_outer_classname = "RegionalInventoryProto";
3031
option java_package = "com.google.shopping.merchant.inventories.v1beta";
32+
option php_namespace = "Google\\Shopping\\Merchant\\Inventories\\V1beta";
33+
option ruby_package = "Google::Shopping::Merchant::Inventories::V1beta";
3134

3235
// Service to manage regional inventory for products. There is also separate
3336
// `regions` resource and API to manage regions definitions.
@@ -110,27 +113,30 @@ message RegionalInventory {
110113
(google.api.field_behavior) = IMMUTABLE
111114
];
112115

113-
// Price of the product in this region.
114-
google.shopping.type.Price price = 4;
116+
// Optional. Price of the product in this region.
117+
google.shopping.type.Price price = 4 [(google.api.field_behavior) = OPTIONAL];
115118

116-
// Sale price of the product in this region. Mandatory if
119+
// Optional. Sale price of the product in this region. Mandatory if
117120
// [`salePriceEffectiveDate`][google.shopping.merchant.inventories.v1beta.RegionalInventory.sale_price_effective_date]
118121
// is defined.
119-
google.shopping.type.Price sale_price = 5;
122+
google.shopping.type.Price sale_price = 5
123+
[(google.api.field_behavior) = OPTIONAL];
120124

121-
// The `TimePeriod` of the
125+
// Optional. The `TimePeriod` of the
122126
// sale price in this region.
123-
google.type.Interval sale_price_effective_date = 6;
127+
google.type.Interval sale_price_effective_date = 6
128+
[(google.api.field_behavior) = OPTIONAL];
124129

125130
// Availability of the product in this region.
126131
// For accepted attribute values, see the [regional product inventory data
127-
// specification](https://support.google.com/merchants/answer/3061342)
132+
// specification](https://support.google.com/merchants/answer/14644124).
128133
optional string availability = 7;
129134

130135
// A list of custom (merchant-provided) attributes. You can also use
131136
// `CustomAttribute` to submit any attribute of the data specification in its
132137
// generic form.
133-
repeated google.shopping.type.CustomAttribute custom_attributes = 8;
138+
repeated google.shopping.type.CustomAttribute custom_attributes = 8
139+
[deprecated = true];
134140
}
135141

136142
// Request message for the `ListRegionalInventories` method.
@@ -159,6 +165,19 @@ message ListRegionalInventoriesRequest {
159165
// [nextPageToken][google.shopping.merchant.inventories.v1beta.ListRegionalInventoriesResponse.next_page_token]
160166
// in the response to the previous request.
161167
string page_token = 3;
168+
169+
// Optional. If true, the `{product}` in the `parent` field of the request
170+
// will be interpreted as unpadded base64url-encoded and decoded during
171+
// request processing to match the decoded value. Default value is `false`.
172+
// Use this if your `{product}` contains special characters, such as forward
173+
// slash `/` or other characters that are unpadded base64url-encoded (as per
174+
// RFC 7515: https://datatracker.ietf.org/doc/html/rfc7515#section-2).
175+
//
176+
// Note that future versions of the API will only accept unpadded
177+
// base64url-encoded product ids, so we strongly recommend proactively setting
178+
// this to `true` and encoding the product ids.
179+
bool product_id_base64_url_encoded = 4
180+
[(google.api.field_behavior) = OPTIONAL];
162181
}
163182

164183
// Response message for the `ListRegionalInventories` method.
@@ -188,6 +207,19 @@ message InsertRegionalInventoryRequest {
188207
// full replacement of the `RegionalInventory` resource is performed.
189208
RegionalInventory regional_inventory = 2
190209
[(google.api.field_behavior) = REQUIRED];
210+
211+
// Optional. If true, the `{product}` in the `parent` field of the request
212+
// will be interpreted as unpadded base64url-encoded and decoded during
213+
// request processing to match the decoded value. Default value is `false`.
214+
// Use this if your `{product}` contains special characters, such as forward
215+
// slash `/` or other characters that are unpadded base64url-encoded (as per
216+
// RFC 7515: https://datatracker.ietf.org/doc/html/rfc7515#section-2).
217+
//
218+
// Note that future versions of the API will only accept unpadded
219+
// base64url-encoded product ids, so we strongly recommend proactively setting
220+
// this to `true` and encoding the product ids.
221+
bool product_id_base64_url_encoded = 3
222+
[(google.api.field_behavior) = OPTIONAL];
191223
}
192224

193225
// Request message for the `DeleteRegionalInventory` method.
@@ -201,4 +233,17 @@ message DeleteRegionalInventoryRequest {
201233
type: "merchantapi.googleapis.com/RegionalInventory"
202234
}
203235
];
236+
237+
// Optional. If true, the `{product}` in the `name` field of the request will
238+
// be interpreted as unpadded base64url-encoded and decoded during request
239+
// processing to match the decoded value. Default value is `false`. Use this
240+
// if your `{product}` contains special characters, such as forward slash `/`
241+
// or other characters that are unpadded base64url-encoded (as per RFC 7515:
242+
// https://datatracker.ietf.org/doc/html/rfc7515#section-2).
243+
//
244+
// Note that future versions of the API will only accept unpadded
245+
// base64url-encoded product ids, so we strongly recommend proactively setting
246+
// this to `true` and encoding the product ids.
247+
bool product_id_base64_url_encoded = 2
248+
[(google.api.field_behavior) = OPTIONAL];
204249
}

0 commit comments

Comments
 (0)