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
Accountssub-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_idandregion_idparameters in the URL path for Get, Update, and Delete operations. - AIP compliance:Merchant API methods follow standard API Improvement
Proposal
patterns (such as using
parentfor List/Create,namefor Get/Delete, and standardupdate_maskusage). - Wrapper types:Fields that previously used
google.protobuf.StringValueorgoogle.protobuf.BoolValuein Content API now use standardoptionalfields in Merchant API. - New features:
- Merchant API introduces a
RadiusAreatype within theRegionresource to define regions based on a radius around a point (initially withTRUST_TESTERvisibility). - 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
. |

