Управление различными типами источников данных

API для продавцов поддерживает различные типы источников данных и методы ввода для предоставления информации о товарах в соответствии с потребностями вашего бизнеса. Источники данных могут содержать различные типы данных:

  • продукт
  • инвентарь
  • повышение
  • обзор

Вы можете настроить источники данных несколькими способами, включая:

Вы можете комбинировать некоторые типы источников данных, управляемые через подинтерфейс API «Источники данных» (например, товары или рекламные акции), с различными поддерживаемыми методами ввода (API, загрузка файлов или выборка файлов). Например, основным источником данных о товарах может быть любой из следующих:

  • API-канал
  • извлеченный файл-канал
  • загруженный файл-канал
  • автоподача

В этом руководстве приведены примеры управления источниками данных с различными типами данных и методами ввода.

Особые соображения

Примите во внимание следующие особые соображения относительно некоторых типов источников данных.

  • Источники данных только для чтения : некоторые типы источников данных доступны только для чтения через API источников данных. Это означает, что вы можете просматривать их список и информацию о них, но не можете создавать, обновлять или удалять их с помощью этого API. К ним относятся:
    • Источники данных с продуктами, управляемые непосредственно в пользовательском интерфейсе Merchant Center (тип ввода UI ).
    • Автопотоки (тип входных данных AUTOFEED ). Хотя сами автопотоки доступны только для чтения в под-API «Источники данных», вы можете включить или отключить функцию автопотока для своей учётной записи с помощью методов autofeedSettings в под-API «Учётные записи». Подробнее см. в разделе «Настройка параметров автопотока» .
  • Правила фидов : Подинтерфейс API источников данных в первую очередь поддерживает правила фидов по умолчанию для связывания дополнительных источников данных с основными. Создание и управление сложными пользовательскими правилами напрямую в этом API не поддерживается. Вы можете управлять порядком дополнительных источников данных в правиле по умолчанию, чтобы указать, в каком порядке объединяются атрибуты из основного и дополнительных источников.

Настройте локальный источник данных инвентаризации с запланированной загрузкой файлов

Вы можете создать локальный источник данных инвентаризации, который автоматически загружает файл с указанного URL-адреса по расписанию. Чтобы создать аналогичный источник данных для региональной инвентаризации, замените поле localInventoryDataSource на regionalInventoryDataSource в теле запроса.

Чтобы создать источник данных, используйте метод dataSources.create и предоставьте объект fileInput с настроенным fetchSettings .

POST https://merchantapi.googleapis.com/datasources/v1beta/accounts/{ACCOUNT_ID}/dataSources
{
  "displayName": "My Scheduled Local Inventory Feed",
  "localInventoryDataSource": {
    "feedLabel": "US_Stores",
    "contentLanguage": "en"
  },
  "fileInput": {
    "fetchSettings": {
      "enabled": true,
      "timeOfDay": {
        "hours": 23
      },
      "timeZone": "America/New_York",
      "frequency": "FREQUENCY_DAILY",
      "fetchUri": "https://www.example.com/inventory/local_inventory_feed.csv"
    }
  }
}

Успешный запрос возвращает созданный ресурс DataSource .

{
  "name": "accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}",
  "dataSourceId": "{DATASOURCE_ID}",
  "displayName": "My Scheduled Local Inventory Feed",
  "localInventoryDataSource": {
    "feedLabel": "US_Stores",
    "contentLanguage": "en"
  },
  "input": "FILE",
  "fileInput": {
    "fetchSettings": {
      "enabled": true,
      "timeOfDay": {
        "hours": 23
      },
      "timeZone": "America/New_York",
      "frequency": "FREQUENCY_DAILY",
      "fetchUri": "https://www.example.com/inventory/local_inventory_feed.csv"
    },
    "fileInputType": "FETCH"
  }
}

В следующих примерах кода показано, как создать локальный источник данных инвентаризации с запланированной выборкой.

Ява

import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.datasources.v1beta.CreateDataSourceRequest;
import com.google.shopping.merchant.datasources.v1beta.DataSource;
import com.google.shopping.merchant.datasources.v1beta.DataSourcesServiceClient;
import com.google.shopping.merchant.datasources.v1beta.DataSourcesServiceSettings;
import com.google.shopping.merchant.datasources.v1beta.FileInput;
import com.google.shopping.merchant.datasources.v1beta.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());

    // As LocalInventoryDataSources are a type of file feed, therefore wildcards are not available.
    // 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

use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\DataSources\V1beta\Client\DataSourcesServiceClient;
use Google\Shopping\Merchant\DataSources\V1beta\CreateDataSourceRequest;
use Google\Shopping\Merchant\DataSources\V1beta\DataSource;
use Google\Shopping\Merchant\DataSources\V1beta\FileInput;
use Google\Shopping\Merchant\DataSources\V1beta\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);

        // As LocalInventoryDataSources are a type of file feed, therefore wildcards are not available.
        // 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();

Питон

from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_datasources_v1beta import CreateDataSourceRequest
from google.shopping.merchant_datasources_v1beta import DataSource
from google.shopping.merchant_datasources_v1beta import DataSourcesServiceClient
from google.shopping.merchant_datasources_v1beta import FileInput
from google.shopping.merchant_datasources_v1beta 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()
  # As LocalInventoryDataSources are a type of file feed, wildcards are not
  # available. 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()

cURL

curl -X POST \
"https://merchantapi.googleapis.com/datasources/v1beta/accounts/{ACCOUNT_ID}/dataSources" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
      "displayName": "My Scheduled Local Inventory Feed",
      "localInventoryDataSource": {
        "feedLabel": "US_Stores",
        "contentLanguage": "en"
      },
      "fileInput": {
        "fetchSettings": {
          "enabled": true,
          "timeOfDay": {
            "hours": 23
          },
          "timeZone": "America/New_York",
          "frequency": "FREQUENCY_DAILY",
          "fetchUri": "https://www.example.com/inventory/local_inventory_feed.csv"
        }
      }
    }'

Создайте источник данных о продвижении с помощью API

Источники данных о промоакциях позволяют вам отправлять рекламные предложения для ваших товаров. Вы можете создать источник данных на основе API для своих промоакций, который позволит отправлять данные напрямую, без необходимости управления файлами.

Используйте метод dataSources.create и укажите promotionDataSource . Для API-канала опустите поле fileInput .

POST https://merchantapi.googleapis.com/datasources/v1beta/accounts/{ACCOUNT_ID}/dataSources
{
  "displayName": "My API Promotions Source",
  "promotionDataSource": {
    "targetCountry": "US",
    "contentLanguage": "en"
  }
}

Успешный запрос возвращает вновь созданный ресурс DataSource .

{
  "name": "accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}",
  "dataSourceId": "{DATASOURCE_ID}",
  "displayName": "My API Promotions Source",
  "promotionDataSource": {
    "targetCountry": "US",
    "contentLanguage": "en"
  },
  "input": "API"
}

В следующих примерах кода показано, как создать источник данных по акциям на основе API.

Ява

import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.datasources.v1beta.CreateDataSourceRequest;
import com.google.shopping.merchant.datasources.v1beta.DataSource;
import com.google.shopping.merchant.datasources.v1beta.DataSourcesServiceClient;
import com.google.shopping.merchant.datasources.v1beta.DataSourcesServiceSettings;
import com.google.shopping.merchant.datasources.v1beta.PromotionDataSource;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/** This class demonstrates how to create a promotion datasource. */
public class CreatePromotionDataSourceSample {

  private static String getParent(String merchantId) {
    return String.format("accounts/%s", merchantId);
  }

  public static String createDataSource(Config config, String displayName) throws Exception {
    GoogleCredentials credential = new Authenticator().authenticate();

    DataSourcesServiceSettings dataSourcesServiceSettings =
        DataSourcesServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    String parent = getParent(config.getAccountId().toString());

    try (DataSourcesServiceClient dataSourcesServiceClient =
        DataSourcesServiceClient.create(dataSourcesServiceSettings)) {

      CreateDataSourceRequest request =
          CreateDataSourceRequest.newBuilder()
              .setParent(parent)
              .setDataSource(
                  DataSource.newBuilder()
                      .setDisplayName(displayName)
                      // Wildcards are not available for PromotionDataSources. PromotionDataSources
                      // can only be created for a specific `targetCountry` and `contentLanguage`
                      // combination.
                      .setPromotionDataSource(
                          PromotionDataSource.newBuilder()
                              .setContentLanguage("en")
                              .setTargetCountry("GB")
                              .build())
                      .build())
              .build();

      System.out.println("Sending Create Promotion 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 Promotions";

    createDataSource(config, displayName);
  }
}

PHP

use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\DataSources\V1beta\Client\DataSourcesServiceClient;
use Google\Shopping\Merchant\DataSources\V1beta\CreateDataSourceRequest;
use Google\Shopping\Merchant\DataSources\V1beta\DataSource;
use Google\Shopping\Merchant\DataSources\V1beta\PromotionDataSource;

/**
 * This class demonstrates how to create a promotion datasource.
 */

class CreatePromotionDataSource
{
    /**
     * Creates a new PromotionDataSource.
     *
     * @param int    $merchantId The Merchant Center account ID.
     * @param string $displayName The displayed datasource name in the Merchant Center UI.
     * @return string The name of the newly created PromotionDataSource.
     */
    function createPromotionDataSourceSample(int $merchantId, string $displayName): string
    {
        // 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);

        // Creates the data source.
        $dataSource = (new DataSource())
            ->setDisplayName($displayName)
            ->setPromotionDataSource(
                (new PromotionDataSource())
                    ->setContentLanguage('en')
                    ->setTargetCountry('GB')
            );

        // Creates the request.
        $request = (new CreateDataSourceRequest())
            ->setParent($parent)
            ->setDataSource($dataSource);

        // Sends the request to the API.
        try {
            print('Sending Create Promotion DataSource request' . PHP_EOL);
            $response = $dataSourcesServiceClient->createDataSource($request);
            print('Inserted DataSource Name below' . PHP_EOL);
            print($response->getName() . PHP_EOL);
            return $response->getName();
        } catch (ApiException $ex) {
            printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage());
            return '';
        }
    }

    // Helper to execute the sample.
    public 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 Promotions';

        $this->createPromotionDataSourceSample($merchantId, $displayName);
    }
}

$sample = new CreatePromotionDataSource();
$sample->callSample();

Питон

from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping import merchant_datasources_v1beta

_ACCOUNT = configuration.Configuration().read_merchant_info()
_PARENT = f"accounts/{_ACCOUNT}"


def create_promotion_data_source():
  """Creates a `DataSource` resource."""

  # Gets OAuth Credentials.
  credentials = generate_user_credentials.main()

  # Creates a client.
  client = merchant_datasources_v1beta.DataSourcesServiceClient(
      credentials=credentials
  )

  # Creates a PromotionDataSource.
  # Wildcards are not available for PromotionDataSources. PromotionDataSources
  # can only be created for a specific `targetCountry` and `contentLanguage`
  # combination.
  promotion_datasource = merchant_datasources_v1beta.PromotionDataSource()
  promotion_datasource.target_country = "CH"
  promotion_datasource.content_language = "fr"

  # Creates a DataSource and populates its attributes.
  data_source = merchant_datasources_v1beta.DataSource()
  data_source.display_name = "Example DataSource"
  data_source.promotion_data_source = promotion_datasource

  # Creates the request.
  request = merchant_datasources_v1beta.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_promotion_data_source()

cURL

curl -X POST \
"https://merchantapi.googleapis.com/datasources/v1beta/accounts/{ACCOUNT_ID}/dataSources" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
      "displayName": "My API Promotions Source",
      "promotionDataSource": {
        "targetCountry": "US",
        "contentLanguage": "en"
      }
    }'

Создайте источник данных обзоров продуктов для загрузки файлов

Используйте источники данных с отзывами о продуктах для отправки отзывов клиентов о ваших продуктах. Вы можете настроить источник данных для приема файлов с отзывами о продуктах, загруженных вручную.

Используйте метод dataSources.create , укажите productReviewDataSource и включите fileInput с указанным fileName .

POST https://merchantapi.googleapis.com/datasources/v1beta/accounts/{ACCOUNT_ID}/dataSources
{
  "displayName": "My Product Reviews Upload Feed",
  "productReviewDataSource": {},
  "fileInput": {
    "fileName": "product_reviews.xml"
  }
}

Успешный запрос возвращает вновь созданный ресурс DataSource .

{
  "name": "accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}",
  "dataSourceId": "{DATASOURCE_ID}",
  "displayName": "My Product Reviews Upload Feed",
  "productReviewDataSource": {},
  "input": "FILE",
  "fileInput": {
    "fileName": "product_reviews.xml",
    "fileInputType": "UPLOAD"
  }
}

Чтобы создать источник данных для отзывов о продавцах, можно использовать аналогичный запрос, заменив объект productReviewDataSource пустым объектом merchantReviewDataSource .

В следующих примерах кода показано, как создать источник данных обзоров продуктов для ручной загрузки файлов.

Ява

import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.datasources.v1beta.CreateDataSourceRequest;
import com.google.shopping.merchant.datasources.v1beta.DataSource;
import com.google.shopping.merchant.datasources.v1beta.DataSourcesServiceClient;
import com.google.shopping.merchant.datasources.v1beta.DataSourcesServiceSettings;
import com.google.shopping.merchant.datasources.v1beta.ProductReviewDataSource;
import java.io.IOException;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/** This class demonstrates how to create a product review data source. */
public class CreateProductReviewsDataSourceSample {

  private static void createProductReviewsDataSource(String accountId) throws IOException {

    GoogleCredentials credential = new Authenticator().authenticate();

    DataSourcesServiceSettings dataSourcesServiceSettings =
        DataSourcesServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    try (DataSourcesServiceClient dataSourcesServiceClient =
        DataSourcesServiceClient.create(dataSourcesServiceSettings)) {
      CreateDataSourceRequest request =
          CreateDataSourceRequest.newBuilder()
              .setParent(String.format("accounts/%s", accountId))
              .setDataSource(
                  DataSource.newBuilder()
                      .setDisplayName("Product Reviews Data Source")
                      .setProductReviewDataSource(ProductReviewDataSource.newBuilder().build())
                      .build())
              .build();

      System.out.println("Creating product reviews data source...");
      DataSource dataSource = dataSourcesServiceClient.createDataSource(request);
      System.out.println(
          String.format("Datasource created successfully: %s", dataSource.getName()));
    } catch (Exception e) {
      System.out.println(e);
      System.exit(1);
    }
  }

  public static void main(String[] args) throws Exception {
    Config config = Config.load();
    createProductReviewsDataSource(config.getAccountId().toString());
  }
}

cURL

curl -X POST \
"https://merchantapi.googleapis.com/datasources/v1beta/accounts/{ACCOUNT_ID}/dataSources" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
      "displayName": "My Product Reviews Upload Feed",
      "productReviewDataSource": {},
      "fileInput": {
        "fileName": "product_reviews.xml"
      }
    }'

Настройте параметры автоподачи

Autoffeed автоматически создает данные о товарах на основе контента вашего сайта. Хотя сам источник данных Autofeed доступен только для чтения в под-API «Источники данных», вы можете включить или отключить функцию Autofeed для своей учетной записи с помощью метода autofeedSettings.update в под-API «Учетные записи».

В этом примере включается сканирование продуктов через Autofeed для учетной записи.

PATCH https://merchantapi.googleapis.com/accounts/v1beta/accounts/{ACCOUNT_ID}/autofeedSettings?updateMask=enableProducts
{
  "name": "accounts/{ACCOUNT_ID}/autofeedSettings",
  "enableProducts": true
}

Успешный запрос возвращает обновленный ресурс AutofeedSettings .

{
  "name": "accounts/{ACCOUNT_ID}/autofeedSettings",
  "enableProducts": true,
  "eligible": true
}

В следующих примерах кода показано, как включить настройки автоподачи для учетной записи.

Ява

import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.protobuf.FieldMask;
import com.google.shopping.merchant.accounts.v1beta.AutofeedSettings;
import com.google.shopping.merchant.accounts.v1beta.AutofeedSettingsName;
import com.google.shopping.merchant.accounts.v1beta.AutofeedSettingsServiceClient;
import com.google.shopping.merchant.accounts.v1beta.AutofeedSettingsServiceSettings;
import com.google.shopping.merchant.accounts.v1beta.UpdateAutofeedSettingsRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/** This class demonstrates how to update AutofeedSettings to be enabled. */
public class UpdateAutofeedSettingsSample {

  public static void updateAutofeedSettings(Config config) throws Exception {

    GoogleCredentials credential = new Authenticator().authenticate();

    AutofeedSettingsServiceSettings autofeedSettingsServiceSettings =
        AutofeedSettingsServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Creates AutofeedSettings name to identify AutofeedSettings.
    String name =
        AutofeedSettingsName.newBuilder()
            .setAccount(config.getAccountId().toString())
            .build()
            .toString();

    // Create AutofeedSettings with the updated fields.
    AutofeedSettings autofeedSettings = AutofeedSettings.newBuilder().setName(name).build();

    FieldMask fieldMask = FieldMask.newBuilder().addPaths("*").build();

    try (AutofeedSettingsServiceClient autofeedSettingsServiceClient =
        AutofeedSettingsServiceClient.create(autofeedSettingsServiceSettings)) {

      UpdateAutofeedSettingsRequest request =
          UpdateAutofeedSettingsRequest.newBuilder()
              .setAutofeedSettings(autofeedSettings)
              .setUpdateMask(fieldMask)
              .build();

      System.out.println("Sending Update AutofeedSettings request");
      AutofeedSettings response = autofeedSettingsServiceClient.updateAutofeedSettings(request);
      System.out.println("Updated AutofeedSettings 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();

    updateAutofeedSettings(config);
  }
}

PHP

use Google\ApiCore\ApiException;
use Google\Protobuf\FieldMask;
use Google\Shopping\Merchant\Accounts\V1beta\AutofeedSettings;
use Google\Shopping\Merchant\Accounts\V1beta\Client\AutofeedSettingsServiceClient;
use Google\Shopping\Merchant\Accounts\V1beta\UpdateAutofeedSettingsRequest;

/**
 * This class demonstrates how to update AutofeedSettings to be enabled.
 */
class UpdateAutofeedSettingsSample
{

    /**
     * Update AutofeedSettings to be enabled.
     *
     * @param array $config The configuration data for authentication and account ID.
     * @return void
     */
    public static function updateAutofeedSettingsSample(array $config): void
    {
        // Get OAuth credentials.
        $credentials = Authentication::useServiceAccountOrTokenFile();

        // Create options for the client.
        $options = ['credentials' => $credentials];

        // Create a client.
        $autofeedSettingsServiceClient = new AutofeedSettingsServiceClient($options);

        // Create the AutofeedSettings name.
        $name = "accounts/" . $config['accountId'] . "/autofeedSettings";

        // Create AutofeedSettings object.
        $autofeedSettings = (new AutofeedSettings())
            ->setName($name);

        // Create FieldMask.
        $fieldMask = (new FieldMask())
            ->setPaths(["*"]);

        // Call the API.
        try {
            // Prepare the request.
            $request = (new UpdateAutofeedSettingsRequest())
                ->setAutofeedSettings($autofeedSettings)
                ->setUpdateMask($fieldMask);

            print "Sending Update AutofeedSettings request\n";
            $response = $autofeedSettingsServiceClient->updateAutofeedSettings($request);
            print "Updated AutofeedSettings Name below\n";
            print $response->getName() . "\n";
        } catch (ApiException $e) {
            print $e->getMessage();
        }
    }

    /**
     * Helper to execute the sample.
     *
     * @return void
     */
    public function callSample(): void
    {
        $config = Config::generateConfig();

        self::updateAutofeedSettingsSample($config);
    }
}

// Run the script
$sample = new UpdateAutofeedSettingsSample();
$sample->callSample();

Питон

from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.protobuf import field_mask_pb2
from google.shopping.merchant_accounts_v1beta import AutofeedSettings
from google.shopping.merchant_accounts_v1beta import AutofeedSettingsServiceClient
from google.shopping.merchant_accounts_v1beta import UpdateAutofeedSettingsRequest

_ACCOUNT = configuration.Configuration().read_merchant_info()


def update_autofeed_settings():
  """Updates the AutofeedSettings of a Merchant Center account."""

  # Gets OAuth Credentials.
  credentials = generate_user_credentials.main()

  # Creates a client.
  client = AutofeedSettingsServiceClient(credentials=credentials)

  # Creates name to identify the AutofeedSettings.
  name = "accounts/" + _ACCOUNT + "/autofeedSettings"

  # Create AutofeedSettings with the updated fields.
  autofeed_settings = AutofeedSettings(name=name, enable_products=False)

  # Create the field mask.
  field_mask = field_mask_pb2.FieldMask(paths=["enable_products"])

  # Creates the request.
  request = UpdateAutofeedSettingsRequest(
      autofeed_settings=autofeed_settings, update_mask=field_mask
  )

  # Makes the request and catches and prints any error messages.
  try:
    response = client.update_autofeed_settings(request=request)
    print("Updated AutofeedSettings Name below")
    print(response.name)
  except RuntimeError as e:
    print("Update AutofeedSettings request failed")
    print(e)


if __name__ == "__main__":
  update_autofeed_settings()

cURL

curl -X PATCH \
"https://merchantapi.googleapis.com/accounts/v1beta/accounts/{ACCOUNT_ID}/autofeedSettings?updateMask=enableProducts" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
      "name": "accounts/{ACCOUNT_ID}/autofeedSettings",
      "enableProducts": true
    }'