migration, compatibility
Migrate region management
This guide explains how to migrate your integration from the RegionsService
in
Content API for Shopping to the RegionsService
within the Accounts sub-API.
The Regions service lets you define custom geographic areas for use cases such
as regional pricing and shipping overrides. You can use regions with services
like RegionalInventory
and ShippingSettings
.
Key differences
- API structure: The Regions service is now part of the
Accounts
sub-API in Merchant API (for example,merchantapi.googleapis.com/accounts/v1/...
). - Resource names: Merchant API uses resource names
(
accounts/{account}/regions/{region}
) instead of separatemerchant_id
andregion_id
parameters in the URL path for Get, Update, and Delete operations. - AIP compliance: Merchant API methods follow standard API Improvement
Proposal patterns (such as using
parent
for List/Create,name
for Get/Delete, and standardupdate_mask
usage). - Wrapper types: Fields that previously used
google.protobuf.StringValue
orgoogle.protobuf.BoolValue
in Content API now use standardoptional
fields in Merchant API. - New features:
- Merchant API introduces a
RadiusArea
type within theRegion
resource to define regions based on a radius around a point (initially withTRUST_TESTER
visibility). - Batch methods -
BatchCreateRegions
,BatchUpdateRegions
,BatchDeleteRegions
- are available.
- Merchant API introduces a
- Error handling: Error codes and messages provide more specific feedback.
Requests
Here's how request patterns change:
Item | Content API for Shopping | Merchant API | Description |
---|---|---|---|
Endpoint | https://shoppingcontent.googleapis.com |
https://merchantapi.googleapis.com |
The base domain changes. |
Get Path | /content/v2.1/{merchant_id}/regions/{region_id} |
/accounts/v1/{name=accounts/*/regions/*} |
Merchant API uses the accounts sub-API and a resource name . |
List Path | /content/v2.1/{merchant_id}/regions |
/accounts/v1/{parent=accounts/*}/regions |
Merchant API uses parent to specify the account. |
Create Path | /content/v2.1/{merchant_id}/regions |
/accounts/v1/{parent=accounts/*}/regions |
Merchant API uses parent . region_id is a field in the request body. |
Update Path | /content/v2.1/{merchant_id}/regions/{region_id} |
/accounts/v1/{name=accounts/*/regions/*} |
The resource name in Merchant API is part of the region object in the body. |
Delete Path | /content/v2.1/{merchant_id}/regions/{region_id} |
/accounts/v1/{name=accounts/*/regions/*} |
Uses resource name . |
Identifiers
Change your use of identifiers as follows:
Item | Content API for Shopping | Merchant API | Description |
---|---|---|---|
Account | merchant_id (integer) |
account (integer, part of name or parent string) |
Find the account ID embedded in the resource name string, for example, accounts/{account} . |
Region | region_id (string) |
{region} (string, part of name string) |
Find the region ID embedded in the resource name string, for example, accounts/{account}/regions/{region} . |
Resource Name | Not strictly used for requests. | name : accounts/{account}/regions/{region} |
Standard identifier for Get/Update/Delete requests. |
Parent Name | Not strictly used for requests. | parent : accounts/{account} |
Standard identifier for List/Create requests. |
Resources
The Region
resource structure has minor changes:
Item | Content API for Shopping | Merchant API | Description |
---|---|---|---|
Resource Identifier | region_id (string), merchant_id (int64) |
name (string): accounts/{account}/regions/{region} |
Merchant API uses a single name field as the resource identifier. |
display_name |
google.protobuf.StringValue |
optional string |
Wrapper type removed. |
radius_area |
Not Available (N/A) | RadiusArea |
This new type defines regions by radius. Includes
region_code , lat_lng , radius ,
radius_units . By default, visibility is restricted.
|
regional_inventory_eligible |
google.protobuf.BoolValue (output only) |
optional bool (output only) |
Wrapper type removed. |
shipping_eligible |
google.protobuf.BoolValue (output only) |
optional bool (output only) |
Wrapper type removed. |
Methods
Change your use of methods as follows:
Item | Content API for Shopping | Merchant API | Description |
---|---|---|---|
Get Region | GetRegion |
GetRegion |
The request uses name . |
Create Region | CreateRegion |
CreateRegion |
The request takes the parent from the URL, while the request body
includes the region object and the region_id .
|
Update Region | UpdateRegion |
UpdateRegion |
The request uses region (which must include region.name )
and update_mask .
|
Delete Region | DeleteRegion
|
DeleteRegion
|
The request uses name .
|
List Regions | ListRegions |
ListRegions |
The request uses parent . page_size and
page_token behavior is consistent.
|
Batch Create | N/A | BatchCreateRegions |
This is a new method. |
Batch Update | N/A | BatchUpdateRegions |
This is a new method. |
Batch Delete | N/A | BatchDeleteRegions |
This is a new method. |
Renamed fields
Item | Content API for Shopping | Merchant API | Description |
---|---|---|---|
Account ID | merchant_id |
account (part of name or parent ) |
Integrated into resource name strings. This affects
Region (response) and protobuf messages used to make API
requests, such as CreateRegionRequest, GetRegionRequest, UpdateRegionRequest, DeleteRegionRequest and ListRegionsRequest .
|
Region ID | region_id |
region (part of name ), region_id |
Integrated into name for most, separate region_id
field in CreateRegionRequest . This affects Region
(response) and protobuf messages used to make API requests, such as
CreateRegionRequest, GetRegionRequest, UpdateRegionRequest, DeleteRegionRequest
and ListRegionsRequest .
|
Region Name (Output) | region_id
|
name
|
The primary identifier field in the response is now the full resource name . This affects Region .
|
Display Name | display_name |
display_name |
The type changes from StringValue to optional string .
This affects Region .
|
Eligibility flags | ...eligible |
...eligible |
The type changes from BoolValue to optional bool .
This affects Region .
|
Update Mask | update_mask |
update_mask |
Region field paths. This affects UpdateRegionRequest . |