Create a file local inventory data source

  • This page provides code samples in Java, PHP, and Python demonstrating how to create a local inventory data source using the Merchant API.

  • The code examples show how to set up a file input for the data source, including specifying the file name, which is required for UPLOAD file types.

  • Local inventory data sources, as a type of file feed, must be created for specific feedLabel and contentLanguage combinations, with wildcards not supported.

  • The code samples show how to create a data source resource with file input, and set its display name, content language, and feed label, then sending the request to the API.

  • The data source file input will be set as UPLOAD by default if FetchSettings is not set and will require manual upload through the Merchant Center UI.

Merchant API code sample to create a file local inventory data source.

Java

  // Copyright 2024 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.datasources.v1 
 ; 
 import 
  
 com.google.api.gax.core.FixedCredentialsProvider 
 ; 
 import 
  
 com.google.auth.oauth2.GoogleCredentials 
 ; 
 import 
  
 com.google.shopping.merchant.datasources.v1.CreateDataSourceRequest 
 ; 
 import 
  
 com.google.shopping.merchant.datasources.v1.DataSource 
 ; 
 import 
  
 com.google.shopping.merchant.datasources.v1.DataSourcesServiceClient 
 ; 
 import 
  
 com.google.shopping.merchant.datasources.v1.DataSourcesServiceSettings 
 ; 
 import 
  
 com.google.shopping.merchant.datasources.v1.FileInput 
 ; 
 import 
  
 com.google.shopping.merchant.datasources.v1.LocalInventoryDataSource 
 ; 
 import 
  
 shopping.merchant.samples.utils.Authenticator 
 ; 
 import 
  
 shopping.merchant.samples.utils.Config 
 ; 
 /** This class demonstrates how to create a local inventory datasource */ 
 public 
  
 class 
 CreateFileLocalInventoryDataSourceSample 
  
 { 
  
 private 
  
 static 
  
 String 
  
 getParent 
 ( 
 String 
  
 merchantId 
 ) 
  
 { 
  
 return 
  
 String 
 . 
 format 
 ( 
 "accounts/%s" 
 , 
  
 merchantId 
 ); 
  
 } 
  
 private 
  
 static 
  
 FileInput 
  
 setFileInput 
 () 
  
 { 
  
 // If FetchSettings are not set, then this will be an `UPLOAD` file type 
  
 // that you must manually upload via the Merchant Center UI. 
  
 return 
  
 FileInput 
 . 
 newBuilder 
 () 
  
 // FileName is required for `UPLOAD` fileInput type. 
  
 . 
 setFileName 
 ( 
 "British T-shirts Local Inventory Data" 
 ) 
  
 . 
 build 
 (); 
  
 } 
  
 public 
  
 static 
  
 String 
  
 createDataSource 
 ( 
 Config 
  
 config 
 , 
  
 String 
  
 displayName 
 , 
  
 FileInput 
  
 fileInput 
 ) 
  
 throws 
  
 Exception 
  
 { 
  
 GoogleCredentials 
  
 credential 
  
 = 
  
 new 
  
 Authenticator 
 (). 
 authenticate 
 (); 
  
 DataSourcesServiceSettings 
  
 dataSourcesServiceSettings 
  
 = 
  
 DataSourcesServiceSettings 
 . 
 newBuilder 
 () 
  
 . 
 setCredentialsProvider 
 ( 
 FixedCredentialsProvider 
 . 
 create 
 ( 
 credential 
 )) 
  
 . 
 build 
 (); 
  
 String 
  
 parent 
  
 = 
  
 getParent 
 ( 
 config 
 . 
 getAccountId 
 (). 
 toString 
 ()); 
  
 // LocalInventoryDataSources can only be created for a specific `feedLabel` and 
  
 // `contentLanguage` combination. 
  
 LocalInventoryDataSource 
  
 localInventoryDataSource 
  
 = 
  
 LocalInventoryDataSource 
 . 
 newBuilder 
 (). 
 setContentLanguage 
 ( 
 "en" 
 ). 
 setFeedLabel 
 ( 
 "GB" 
 ). 
 build 
 (); 
  
 try 
  
 ( 
 DataSourcesServiceClient 
  
 dataSourcesServiceClient 
  
 = 
  
 DataSourcesServiceClient 
 . 
 create 
 ( 
 dataSourcesServiceSettings 
 )) 
  
 { 
  
 CreateDataSourceRequest 
  
 request 
  
 = 
  
 CreateDataSourceRequest 
 . 
 newBuilder 
 () 
  
 . 
 setParent 
 ( 
 parent 
 ) 
  
 . 
 setDataSource 
 ( 
  
 DataSource 
 . 
 newBuilder 
 () 
  
 . 
 setDisplayName 
 ( 
 displayName 
 ) 
  
 . 
 setLocalInventoryDataSource 
 ( 
 localInventoryDataSource 
 ) 
  
 . 
 setFileInput 
 ( 
 fileInput 
 ) 
  
 . 
 build 
 ()) 
  
 . 
 build 
 (); 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 "Sending Create Local Inventory DataSource request" 
 ); 
  
 DataSource 
  
 response 
  
 = 
  
 dataSourcesServiceClient 
 . 
 createDataSource 
 ( 
 request 
 ); 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 "Inserted DataSource Name below" 
 ); 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 response 
 . 
 getName 
 ()); 
  
 return 
  
 response 
 . 
 getName 
 (); 
  
 } 
  
 catch 
  
 ( 
 Exception 
  
 e 
 ) 
  
 { 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 e 
 ); 
  
 System 
 . 
 exit 
 ( 
 1 
 ); 
  
 return 
  
 null 
 ; 
  
 } 
  
 } 
  
 public 
  
 static 
  
 void 
  
 main 
 ( 
 String 
 [] 
  
 args 
 ) 
  
 throws 
  
 Exception 
  
 { 
  
 Config 
  
 config 
  
 = 
  
 Config 
 . 
 load 
 (); 
  
 // The displayed datasource name in the Merchant Center UI. 
  
 String 
  
 displayName 
  
 = 
  
 "British Local Inventory File" 
 ; 
  
 // The file input data that this datasource will receive. 
  
 FileInput 
  
 fileInput 
  
 = 
  
 setFileInput 
 (); 
  
 createDataSource 
 ( 
 config 
 , 
  
 displayName 
 , 
  
 fileInput 
 ); 
  
 } 
 } 
  
 

PHP

 < ?php 
 /** 
 * Copyright 2024 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. 
 */ 
 require_once __DIR__ . '/../../../vendor/autoload.php'; 
 require_once __DIR__ . '/../../Authentication/Authentication.php'; 
 require_once __DIR__ . '/../../Authentication/Config.php'; 
 use Google\ApiCore\ApiException; 
 use Google\Shopping\Merchant\DataSources\V1\Client\DataSourcesServiceClient; 
 use Google\Shopping\Merchant\DataSources\V1\CreateDataSourceRequest; 
 use Google\Shopping\Merchant\DataSources\V1\DataSource; 
 use Google\Shopping\Merchant\DataSources\V1\FileInput; 
 use Google\Shopping\Merchant\DataSources\V1\LocalInventoryDataSource; 
 /** 
 * This class demonstrates how to create a local inventory datasource with a 
 * file input. 
 */ 
 class CreateFileLocalInventoryDataSourceSample 
 { 
 private static function getFileInput(): FileInput 
 { 
 // If FetchSettings is not set, then this will be an `UPLOAD` file type 
 // that you must manually upload via the Merchant Center UI. 
 return (new FileInput()) 
 // FileName is required for `UPLOAD` fileInput type. 
 ->setFileName('British T-shirts Local Inventory Data'); 
 } 
 public function createDataSource(string $merchantId, string $displayName, FileInput $fileInput): 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. 
 $dataSourcesServiceClient = new DataSourcesServiceClient($options); 
 $parent = sprintf('accounts/%s', $merchantId); 
 // LocalInventoryDataSources can only be created for a specific `feedLabel` and 
 // `contentLanguage` combination. 
 $localInventoryDataSource = 
 (new LocalInventoryDataSource()) 
 ->setContentLanguage('en') 
 ->setFeedLabel('GB'); 
 try { 
 // Prepare the request message. 
 $request = (new CreateDataSourceRequest()) 
 ->setParent($parent) 
 ->setDataSource( 
 (new DataSource()) 
 ->setDisplayName($displayName) 
 ->setLocalInventoryDataSource($localInventoryDataSource) 
 ->setFileInput($fileInput) 
 ); 
 print('Sending Create Local Inventory DataSource request' . PHP_EOL); 
 $response = $dataSourcesServiceClient->createDataSource($request); 
 print('Inserted DataSource Name below' . PHP_EOL); 
 print($response->getName() . PHP_EOL); 
 } catch (ApiException $ex) { 
 printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); 
 } 
 } 
 // Helper to execute the sample. 
 function callSample(): void 
 { 
 $config = Config::generateConfig(); 
 // The Merchant Center Account ID. 
 $merchantId = $config['accountId']; 
 // The displayed datasource name in the Merchant Center UI. 
 $displayName = 'British Primary Inventory File'; 
 $fileInput = self::getFileInput(); 
 $this->createDataSource($merchantId, $displayName, $fileInput); 
 } 
 } 
 $sample = new CreateFileLocalInventoryDataSourceSample(); 
 $sample->callSample();  
 
 

Python

  # -*- coding: utf-8 -*- 
 # Copyright 2024 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 
 # 
 #     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. 
 """This class demonstrates how to create a local inventory datasource.""" 
 from 
  
 examples.authentication 
  
 import 
 configuration 
 from 
  
 examples.authentication 
  
 import 
 generate_user_credentials 
 from 
  
 google.shopping.merchant_datasources_v1 
  
 import 
 CreateDataSourceRequest 
 from 
  
 google.shopping.merchant_datasources_v1 
  
 import 
 DataSource 
 from 
  
 google.shopping.merchant_datasources_v1 
  
 import 
 DataSourcesServiceClient 
 from 
  
 google.shopping.merchant_datasources_v1 
  
 import 
 FileInput 
 from 
  
 google.shopping.merchant_datasources_v1 
  
 import 
 LocalInventoryDataSource 
 _ACCOUNT 
 = 
 configuration 
 . 
 Configuration 
 () 
 . 
 read_merchant_info 
 () 
 _PARENT 
 = 
 f 
 "accounts/ 
 { 
 _ACCOUNT 
 } 
 " 
 def 
  
 create_file_local_inventory_data_source 
 (): 
  
 """Creates a `DataSource` resource.""" 
 # Gets OAuth Credentials. 
 credentials 
 = 
 generate_user_credentials 
 . 
 main 
 () 
 # Creates a client. 
 client 
 = 
 DataSourcesServiceClient 
 ( 
 credentials 
 = 
 credentials 
 ) 
 # If FetchSettings are not set, then this will be an `UPLOAD` file type 
 # that you must manually upload via the Merchant Center UI or via SFTP. 
 file_input 
 = 
 FileInput 
 () 
 file_input 
 . 
 file_name 
 = 
 "British T-shirts Local Inventory Data.txt" 
 # Creates a SupplementalProductDataSource. 
 local_inventory_datasource 
 = 
 LocalInventoryDataSource 
 () 
 # LocalInventoryDataSources can only be created for a specific 
 # `feedLabel` and `contentLanguage` combination. 
 local_inventory_datasource 
 . 
 content_language 
 = 
 "en" 
 local_inventory_datasource 
 . 
 feed_label 
 = 
 "GB" 
 # Creates a DataSource and populates its attributes. 
 data_source 
 = 
 DataSource 
 () 
 data_source 
 . 
 display_name 
 = 
 "Example Local Inventory DataSource" 
 data_source 
 . 
 local_inventory_data_source 
 = 
 local_inventory_datasource 
 data_source 
 . 
 file_input 
 = 
 file_input 
 # Creates the request. 
 request 
 = 
 CreateDataSourceRequest 
 ( 
 parent 
 = 
 _PARENT 
 , 
 data_source 
 = 
 data_source 
 ) 
 # Makes the request and catches and prints any error messages. 
 try 
 : 
 response 
 = 
 client 
 . 
 create_data_source 
 ( 
 request 
 = 
 request 
 ) 
 print 
 ( 
 f 
 "DataSource successfully created: 
 { 
 response 
 } 
 " 
 ) 
 except 
 RuntimeError 
 as 
 e 
 : 
 print 
 ( 
 "DataSource creation failed" 
 ) 
 print 
 ( 
 e 
 ) 
 if 
 __name__ 
 == 
 "__main__" 
 : 
 create_file_local_inventory_data_source 
 () 
  
 
Design a Mobile Site
View Site in Mobile | Classic
Share by: