Merchant API code sample to insert regional inventory.
Java
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package
shopping.merchant.samples.inventories.v1
;
import
com.google.api.gax.core.FixedCredentialsProvider
;
import
com.google.auth.oauth2.GoogleCredentials
;
import
com.google.shopping.merchant.inventories.v1.InsertRegionalInventoryRequest
;
import
com.google.shopping.merchant.inventories.v1.RegionalInventory
;
import
com.google.shopping.merchant.inventories.v1.RegionalInventoryAttributes
;
import
com.google.shopping.merchant.inventories.v1.RegionalInventoryAttributes.Availability
;
import
com.google.shopping.merchant.inventories.v1.RegionalInventoryServiceClient
;
import
com.google.shopping.merchant.inventories.v1.RegionalInventoryServiceSettings
;
import
com.google.shopping.type.Price
;
import
shopping.merchant.samples.utils.Authenticator
;
import
shopping.merchant.samples.utils.Config
;
/** This class demonstrates how to insert a regional inventory for a given product */
public
class
InsertRegionalInventorySample
{
private
static
String
getParent
(
String
accountId
,
String
productId
)
{
return
String
.
format
(
"accounts/%s/products/%s"
,
accountId
,
productId
);
}
public
static
void
insertRegionalInventory
(
Config
config
,
String
productId
,
String
regionId
)
throws
Exception
{
GoogleCredentials
credential
=
new
Authenticator
().
authenticate
();
RegionalInventoryServiceSettings
regionalInventoryServiceSettings
=
RegionalInventoryServiceSettings
.
newBuilder
()
.
setCredentialsProvider
(
FixedCredentialsProvider
.
create
(
credential
))
.
build
();
String
parent
=
getParent
(
config
.
getAccountId
().
toString
(),
productId
);
try
(
RegionalInventoryServiceClient
regionalInventoryServiceClient
=
RegionalInventoryServiceClient
.
create
(
regionalInventoryServiceSettings
))
{
Price
price
=
Price
.
newBuilder
().
setAmountMicros
(
33_450_000
).
setCurrencyCode
(
"USD"
).
build
();
InsertRegionalInventoryRequest
request
=
InsertRegionalInventoryRequest
.
newBuilder
()
.
setParent
(
parent
)
.
setRegionalInventory
(
RegionalInventory
.
newBuilder
()
.
setRegion
(
regionId
)
.
setRegionalInventoryAttributes
(
RegionalInventoryAttributes
.
newBuilder
()
.
setAvailability
(
Availability
.
OUT_OF_STOCK
)
.
setPrice
(
price
)
.
build
())
.
build
())
.
build
();
System
.
out
.
println
(
"Sending insert RegionalInventory request"
);
RegionalInventory
response
=
regionalInventoryServiceClient
.
insertRegionalInventory
(
request
);
System
.
out
.
println
(
"Inserted RegionalInventory Name below"
);
System
.
out
.
println
(
response
.
getName
());
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
e
);
}
}
public
static
void
main
(
String
[]
args
)
throws
Exception
{
Config
config
=
Config
.
load
();
// An ID assigned to a product by Google. In the format
// channel:contentLanguage:feedLabel:offerId
String
productId
=
"online:en:label:1111111111"
;
// The ID uniquely identifying each region.
String
regionId
=
"1111111"
;
insertRegionalInventory
(
config
,
productId
,
regionId
);
}
}
PHP
< ?php
/**
* Copyright 2023 Google Inc. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
require_once __DIR__ . '/../../../vendor/autoload.php';
require_once __DIR__ . '/../../Authentication/Authentication.php';
use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Inventories\V1\RegionalInventory;
use Google\Shopping\Merchant\Inventories\V1\Client\RegionalInventoryServiceClient;
use Google\Shopping\Merchant\Inventories\V1\InsertRegionalInventoryRequest;
use Google\Shopping\Merchant\Inventories\V1\RegionalInventoryAttributes;
use Google\Shopping\Merchant\Inventories\V1\RegionalInventoryAttributes\Availability;
use Google\Shopping\Type\Price;
/**
* Class to insert a `RegionalInventory` to a given product in your
* merchant account.
*
* Replaces the full `RegionalInventory` resource if an entry with the same
* [`region`]
* [google.shopping.merchant.inventories.v1beta.RegionalInventory.region]
* already exists for the product.
*
* It might take up to 30 minutes for the new or updated `RegionalInventory`
* resource to appear in products.
*/
class InsertRegionalInventory
{
// ENSURE you fill in the merchant account and product ID for the sample to
// work.
private const PARENT = 'accounts/[INSERT_ACCOUNT_HERE]/products/[INSERT_PRODUCT_HERE]';
// ENSURE you fill in region ID for the sample to work.
private const REGIONAL_INVENTORY_REGION = 'INSERT_REGION_HERE';
/**
* Inserts a regional inventory underneath the parent product.
*
* @param string $parent The account and product where this inventory will be inserted.
* Format: `accounts/{account}/products/{product}`
* @param string $regionalInventoryRegion
* ID of the region for this
* `RegionalInventory` resource. See the [Regional availability and
* pricing](https://support.google.com/merchants/answer/9698880) for more details.
*/
public function insertRegionalInventorySample(string $parent, string $regionalInventoryRegion): void
{
// Gets the OAuth credentials to make the request.
$credentials = Authentication::useServiceAccountOrTokenFile();
// Creates options config containing credentials for the client to use.
$options = ['credentials' => $credentials];
// Creates a client.
$regionalInventoryServiceClient = new RegionalInventoryServiceClient($options);
// Creates a price object.
$price = new Price(
[
'currency_code' => "USD",
'amount_micros' => 33450000,
]
);
// Creates a new regional inventory object.
$regionalInventory = (new RegionalInventory())
->setRegion($regionalInventoryRegion)
->setRegionalInventoryAttributes((new RegionalInventoryAttributes())
->setAvailability(Availability::IN_STOCK)
->setPrice($price));
$request = (new InsertRegionalInventoryRequest())
->setParent($parent)
->setRegionalInventory($regionalInventory);
// Calls the API and catches and prints any network failures/errors.
try {
/** @var RegionalInventory $response */
$response = $regionalInventoryServiceClient->insertRegionalInventory($request);
printf('Response data: %s%s', $response->serializeToJsonString(), PHP_EOL);
} catch (ApiException $ex) {
printf('Call failed with message: %s%s', $ex->getMessage(), PHP_EOL);
}
}
/**
* Helper to execute the sample.
*/
public function callSample(): void
{
// Makes the call to insert the regional inventory to the parent product
// for the given region.
$this->insertRegionalInventorySample($this::PARENT, $this::REGIONAL_INVENTORY_REGION);
}
}
$sample = new InsertRegionalInventory();
$sample->callSample();