Обзор Promotions sub-API

Промоакции позволяют показывать специальные предложения для товаров, которые вы продаете в Google. Промоакции показываются в разных сервисах Google, в том числе в Google Поиске и на вкладке "Покупки", а также в браузере Chrome. Чтобы промоакция была одобрена, она должна соответствовать определенным критериям. Подробнее о требованиях к промоакциям…

Если вы добавите информацию об акциях для товаров, предлагаемых в Google, покупатели увидят специальное предложение Например, "Скидка 15 %" или "Бесплатная доставка". Ссылки на специальные предложения могут повысить привлекательность ваших товаров и побудить покупателей совершить покупку. Также все промоакции должны применяться при оплате заказа в онлайн-магазине или в точке продажи.

Подробнее о промоакциях…

Требования

Чтобы показывать промоакции, Google требуется определенная информация о вашей компании и товарах. Что вам нужно:

Кроме того, вам нужно зарегистрировать аккаунт Merchant Center в программе "Промоакции". Если вы не уверены, что уже зарегистрированы, проверьте это в Merchant Center.

Если вы не зарегистрированы, заполните форму запроса. Вам сообщат, когда можно будет внедрять промоакции.

Подробнее о правилах проведения промоакций и требованиях к продавцам…

Как создать источник данных

Чтобы создать источник данных для промоакций, используйте метод accounts.dataSources.create. Если у вас уже есть источник данных для промоакций, используйте метод accounts.dataSources.list, чтобы получить все источники данных. Затем вы можете использовать поле name источника данных для промоакций, чтобы создавать промоакции.

Чтобы ссылаться на них напрямую в будущих вызовах API, настоятельно рекомендуем хранить accounts.dataSources.name в локальной базе данных для каждой промоакции. Вы можете выполнить однократное заполнение локальной базы данных.

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

POST https://merchantapi.googleapis.com/datasources/v1/accounts/{ACCOUNT_ID}/dataSources

{
  "displayName": "{DISPLAY_NAME}",
  "promotionDataSource": {
    "contentLanguage": "{CONTENT_LANGUAGE}",
    "targetCountry": "{TARGET_COUNTRY}"
  }
}

Замените следующее:

  • {ACCOUNT_ID} – уникальный идентификатор вашего аккаунта, который можно найти в интерфейсе Merchant Center.
  • {DISPLAY_NAME} – отображаемое название источника данных.
  • {CONTENT_LANGUAGE} – двухбуквенный код языка товаров в источнике данных по стандарту ISO 639-1.
  • {TARGET_COUNTRY} – код CLDR целевой страны, в которой вы хотите показывать промоакции.

После успешного выполнения запроса вы увидите следующий ответ, содержащий сведения о созданном источнике данных для промоакций:

{
  "name": "accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}",
  "dataSourceId": "{DATASOURCE_ID}",
  "displayName": "{DISPLAY_NAME}",
  "promotionDataSource": {
    "targetCountry": "{TARGET_COUNTRY}",
    "contentLanguage": "{CONTENT_LANGUAGE}"
  },
  "input": "API"
}

Запустите промоакцию

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

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

  • contentLanguage
  • redemptionChannel
  • promotionId
  • targetCountry
  • attributes.offerType
  • attributes.genericRedemptionCode
  • attributes.couponValueType
  • attributes.productApplicability
  • attributes.promotionEffectiveTimePeriod.endTime
  • attributes.promotionEffectiveTimePeriod.startTime
  • attributes.longTitle

Мы проверяем условия акций на соответствие правилам Google. Если все в порядке, информация о специальном предложении будет показываться вместе со сведениями о товаре. Подробнее о проверке промоакций…

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

Ниже показано, как создать промоакцию для интернет-магазина.

HTTP

POST https://merchantapi.googleapis.com/promotions/v1/accounts/{ACCOUNT_ID}/promotions:insert

{
"promotion": {
  "name": "{PROMOTION_NAME}",
  "promotionId": "{PROMOTION_ID}",
  "targetCountry": "{TARGET_COUNTRY}",
  "redemptionChannel": [
    "ONLINE"
  ],
  "contentLanguage": "{CONTENT_LANGUAGE}",
  "attributes": {
    "promotionDisplayTimePeriod": {
      "endTime": "{PROMOTION_END_TIME}",
      "startTime": "{PROMOTION_START_TIME}"
    },
    "offerType": "{OFFER_TYPE}",
    "longTitle": "{LONG_TITLE}"
  }
},
"dataSource": "accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}"
}

cURL

  curl --request POST \
'https://merchantapi.googleapis.com/promotions/v1/accounts/{ACCOUNT_ID}/promotions:insert?key=[YOUR_API_KEY]' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"dataSource":"{DATASOURCE_ID}","promotion":{"name":"accounts/{ACCOUNT_ID}/promotions/{PROMOTION_ID}y","promotionId":"abc","contentLanguage":"en","targetCountry":"US","redemptionChannel":["ONLINE"]}}' \
--compressed

Ознакомьтесь с минимальными требованиями к атрибуту "идентификатор промоакции".

Допустимые значения для обязательного поля offerType – NO_CODE и GENERIC_CODE. Если вы не укажете одно из этих значений, запрос к API не будет выполнен и вы получите ответ HTTP 400 [offer_type] validation/missing_required: Invalid or missing required attribute: offer_type. Похожее сообщение об ошибке возвращается, если вы не заполнили обязательные поля.

Если вы не укажете значение для поля attributes.genericRedemptionCode, запрос не будет выполнен и вы получите ответ HTTP 400 [genericRedemptionCode] No redemption code provided.

Значения полей promotion.attributes.promotionDisplayTimePeriod.startTime и promotion.attributes.promotionDisplayTimePeriod.endTime должны быть указаны в формате yyyy-mm-ddThh:mm:ssZ. Убедитесь, что в этих полях указаны даты в будущем.

Подробнее о спецификации данных промоакций…

Рекомендации по созданию промоакций собраны в этой статье.

Список атрибутов, связанных с промоакциями, можно найти в статье Как добавлять атрибуты со структурированными данными.

После успешного выполнения запроса на создание промоакции может пройти несколько минут, прежде чем она станет доступна через API или появится в Merchant Center.

Ниже приведен пример кода, который можно использовать для асинхронной вставки нескольких промоакций.

Java

import com.google.api.core.ApiFuture;
import com.google.api.core.ApiFutureCallback;
import com.google.api.core.ApiFutures;
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.api.gax.grpc.ChannelPoolSettings;
import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.common.util.concurrent.MoreExecutors;
import com.google.protobuf.Timestamp;
import com.google.shopping.merchant.promotions.v1.Attributes;
import com.google.shopping.merchant.promotions.v1.CouponValueType;
import com.google.shopping.merchant.promotions.v1.InsertPromotionRequest;
import com.google.shopping.merchant.promotions.v1.OfferType;
import com.google.shopping.merchant.promotions.v1.ProductApplicability;
import com.google.shopping.merchant.promotions.v1.Promotion;
import com.google.shopping.merchant.promotions.v1.PromotionsServiceClient;
import com.google.shopping.merchant.promotions.v1.PromotionsServiceSettings;
import com.google.shopping.merchant.promotions.v1.RedemptionChannel;
import com.google.shopping.type.CustomAttribute;
import com.google.shopping.type.Destination.DestinationEnum;
import com.google.type.Interval;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/** This class demonstrates how to insert multiple promotions asynchronously. */
public class InsertPromotionsAsyncSample {

  private static String generateRandomString() {
    String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    Random random = new Random();
    StringBuilder sb = new StringBuilder(8);
    for (int i = 0; i < 8; i++) {
      sb.append(characters.charAt(random.nextInt(characters.length())));
    }
    return sb.toString();
  }

  private static Promotion createPromotion(String accountId) {
    String merchantPromotionId = generateRandomString();

    Attributes attributes =
        Attributes.newBuilder()
            .setProductApplicability(ProductApplicability.ALL_PRODUCTS)
            .setOfferType(OfferType.GENERIC_CODE)
            .setGenericRedemptionCode("ABCD1234")
            .setLongTitle("My promotion")
            .setCouponValueType(CouponValueType.PERCENT_OFF)
            .addPromotionDestinations(DestinationEnum.SHOPPING_ADS)
            .setPercentOff(10)
            // Note that promotions have a 6-month limit.
            // For more information, read here: https://support.google.com/merchants/answer/2906014
            // Also note that only promotions valid within the past 365 days are shown in the UI.
            .setPromotionEffectiveTimePeriod(
                Interval.newBuilder()
                    .setStartTime(Timestamp.newBuilder().setSeconds(1726842472))
                    .setEndTime(Timestamp.newBuilder().setSeconds(1726842473))
                    .build())
            .build();

    return Promotion.newBuilder()
        .setName(String.format("accounts/%s/merchantPromotions/%s", accountId, merchantPromotionId))
        .setPromotionId(merchantPromotionId)
        .setContentLanguage("fr")
        .setTargetCountry("CH")
        .addRedemptionChannel(RedemptionChannel.ONLINE)
        .setAttributes(attributes)
        // Custom attributes allow you to add additional information which is not available in
        // Attributes. For example, you might want to pilot experimental functionality.
        .addCustomAttributes(
            CustomAttribute.newBuilder()
                .setName("another example name")
                .setValue("another example value")
                .build())
        .build();
  }

  public static void asyncInsertPromotions(String accountId, String dataSourceId) throws Exception {
    GoogleCredentials credential = new Authenticator().authenticate();

    // Creates a channel provider. This provider manages a pool of gRPC channels
    // to enhance throughput for bulk operations. Each individual channel in the pool
    // can handle up to approximately 100 concurrent requests.
    //
    // Channel: A single connection pathway to the service.
    // Pool: A collection of multiple channels managed by this provider.
    //   Requests are distributed across the channels in the pool.
    //
    // We recommend estimating the number of concurrent requests you'll make, divide by 50 (50%
    // utilization of channel capacity), and set the pool size to that number.
    InstantiatingGrpcChannelProvider channelProvider =
        InstantiatingGrpcChannelProvider.newBuilder()
            .setChannelPoolSettings(ChannelPoolSettings.staticallySized(30))
            .build();

    PromotionsServiceSettings merchantPromotionsServiceSettings =
        PromotionsServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .setTransportChannelProvider(channelProvider)
            .build();

    try (PromotionsServiceClient merchantPromotionsServiceClient =
        PromotionsServiceClient.create(merchantPromotionsServiceSettings)) {

      // Arbitrarily creates five merchant promotions with random IDs.
      List<InsertPromotionRequest> requests = new ArrayList<>();
      for (int i = 0; i < 5; i++) {
        InsertPromotionRequest request =
            InsertPromotionRequest.newBuilder()
                .setParent(String.format("accounts/%s", accountId))
                .setPromotion(createPromotion(accountId))
                .setDataSource(String.format("accounts/%s/dataSources/%s", accountId, dataSourceId))
                .build();
        requests.add(request);
      }

      // Inserts the merchant promotions.
      List<ApiFuture<Promotion>> futures =
          requests.stream()
              .map(
                  request ->
                      merchantPromotionsServiceClient.insertPromotionCallable().futureCall(request))
              .collect(Collectors.toList());

      // Creates callback to handle the responses when all are ready.
      ApiFuture<List<Promotion>> responses = ApiFutures.allAsList(futures);
      ApiFutures.addCallback(
          responses,
          new ApiFutureCallback<List<Promotion>>() {
            @Override
            public void onSuccess(List<Promotion> results) {
              System.out.println("Inserted merchant promotions below:");
              System.out.println(results);
            }

            @Override
            public void onFailure(Throwable throwable) {
              System.out.println(throwable);
            }
          },
          MoreExecutors.directExecutor());
    } catch (Exception e) {
      System.out.println(e);
    }
  }


  public static void main(String[] args) throws Exception {
    Config config = Config.load();
    asyncInsertPromotions(config.getAccountId().toString(), "<YOUR_DATA_SOURCE_ID>");
  }
}

Ниже приведены примеры промоакций, которые вы можете использовать.

Местная промоакция, которая распространяется на все товары и все магазины

В примере ниже показано, как создать промоакцию, которая будет распространяться на все товары в аккаунте Merchant Center и все магазины, добавленные в связанный профиль компании.

POST https://merchantapi.googleapis.com/promotions/v1/accounts/{ACCOUNT_ID}/promotions:insert

{
  "promotion": {
    "promotionId": "buy_2_get_10_off",
    "contentLanguage": "en",
    "targetCountry": "US",
    "redemptionChannel": [
      "IN_STORE"
    ],
    "attributes": {
      "longTitle": "Buy 2 and get 10$ OFF purchase",
      "productApplicability": "ALL_PRODUCTS",
      "offerType": "NO_CODE",
      "couponValueType": "BUY_M_GET_MONEY_OFF",
      "promotionDisplayTimePeriod": {
        "startTime": "2024-2-06T00:47:44Z",
        "endTime": "2024-5-06T00:47:44Z"
      },
      "promotionEffectiveTimePeriod": {
        "startTime": "2024-2-06T00:47:44Z",
        "endTime": "2024-5-06T00:47:44Z"
      },
      "moneyOffAmount": {
        "amountMicros": "1000000",
        "currencyCode": "USD"
      },
      "minimumPurchaseQuantity": 2,
      "storeApplicability": "ALL_STORES",
      "promotionUrl": "http://promotionnew4url.com/",
      "promotionDestinations": [
        "LOCAL_INVENTORY_ADS"
      ],
    }
  },
  "dataSource": "accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}"
}

Поле productApplicability обязательно для заполнения. Он указывает, распространяется ли промоакция на все товары или только на некоторые. Допустимые значения: ALL_PRODUCTS и SPECIFIC_PRODUCTS. Подробнее о том, как выбрать товары для промоакции…

Поле couponValueType обязательно для заполнения. Он указывает на тип проводимой вами промоакции. Список допустимых значений приведен в статье Тип значения купона. В зависимости от выбранного типа значения купона некоторые атрибуты являются обязательными.

Поле minimumPurchaseQuantity позволяет задать минимальное количество товаров в заказе, необходимое для участия в промоакции. Подробнее о минимальном количестве товара в заказе по условиям промоакции…

Аналогично, в поле minimumPurchaseAmount можно указать минимальную сумму покупки, необходимую для участия в промоакции. Подробнее о минимальной сумме покупки…

Подробнее о том, какие значения нужно указать для создания местной промоакции…

Онлайн-промоакция, которая распространяется на определенные товары и требует ввода промокода.

В примере ниже показано, как создать онлайн-промоакцию, которая применяется к выбранным товарам с кодом активации.

POST https://merchantapi.googleapis.com/promotions/v1/accounts/{ACCOUNT_ID}/promotions:insert

{
 "promotion": {
   "promotionId": "25_pct_off",
   "contentLanguage": "en",
   "targetCountry": "US",
   "redemptionChannel": [
     "ONLINE"
   ],
   "attributes": {
     "longTitle": "10% off on selected items",
     "productApplicability": "SPECIFIC_PRODUCTS",
     "offerType": "GENERIC_CODE",
     "genericRedemptionCode": "SPRINGSALE",
     "couponValueType": "PERCENT_OFF",
     "promotionDisplayTimePeriod": {
       "startTime": "2024-2-06T00:47:44Z",
       "endTime": "2024-5-06T00:47:44Z"
     },
     "promotionEffectiveTimePeriod": {
       "startTime": "2024-2-06T00:47:44Z",
       "endTime": "2024-5-06T00:47:44Z"
     },
     "percentOff": 25,
     "promotionDestinations": [
       "FREE_LISTINGS"
     ],
     "itemIdInclusion": [
       "1499860100",
       "1499860101",
       "1499860102",
       "1499860103",
       "1499860104"
     ],
   }
 },
 "dataSource": "accounts/{ACCOUNT_ID}/dataSources/1000000573361824"
}

Посмотреть промоакции

Чтобы посмотреть промоакцию, используйте accounts.promotions.get. Этот запрос GET доступен только для чтения. Для этого потребуется указать merchantId и идентификатор промоакции. Метод GET возвращает соответствующий ресурс promotions.

Пример:

HTTP

GET https://merchantapi.googleapis.com/promotions/v1/accounts/{ACCOUNT_ID}/promotions/{PROMOTION_ID}

cURL

  curl \
   'https://merchantapi.googleapis.com/promotions/v1/accounts/{ACCOUNT_ID}/promotions/{PROMOTION_ID}?key=[YOUR_API_KEY]' \
   --header 'Authorization: Bearer {ACCESS_TOKEN}' \
   --header 'Accept: application/json' \
   --compressed

Замените следующее:

  • {ACCOUNT_ID} – уникальный идентификатор вашего аккаунта Merchant Center.
  • {PROMOTION_ID} – уникальный идентификатор промоакции, которую вы хотите получить. Формат: {CHANNEL} ~{CONTENT_LANGUAGE}~{TARGET_COUNTRY}~{PROMOTION_ID} .

Обратите внимание, что только что созданную промоакцию можно будет получить с помощью API через несколько минут.

Как посмотреть местную промоакцию

В примере ниже показан запрос, который позволяет получить данные о местной промоакции с идентификатором in_store~en~US~buy_2_get_10_off.

GET https://merchantapi.googleapis.com/promotions/v1/accounts/{ACCOUNT_ID}/promotions/in_store~en~US~buy_2_get_10_off

Если запрос выполнен успешно, вы увидите следующий ответ:

{
 "name": "accounts/{ACCOUNT_ID}/promotions/in_store~en~US~buy_2_get_10_off",
 "promotionId": "buy_2_get_10_off",
 "contentLanguage": "en",
 "targetCountry": "US",
 "redemptionChannel": [
   "IN_STORE"
 ],
 "attributes": {
   "longTitle": "Buy 2 and get 10$ OFF purchase",
   "productApplicability": "ALL_PRODUCTS",
   "offerType": "NO_CODE",
   "couponValueType": "BUY_M_GET_MONEY_OFF",
   "promotionDisplayTimePeriod": {
     "startTime": "2024-2-06T00:47:44Z",
     "endTime": "2024-5-06T00:47:44Z"
   },
   "promotionEffectiveTimePeriod": {
     "startTime": "2024-2-06T00:47:44Z",
     "endTime": "2024-5-06T00:47:44Z"
   },
   "moneyOffAmount": {
     "amountMicros": "1000000",
     "currencyCode": "USD"
   },
   "minimumPurchaseQuantity": 2,
   "storeApplicability": "ALL_STORES",
   "promotionUrl": "http://promotionnew4url.com/",
   "promotionDestinations": [
     "LOCAL_INVENTORY_ADS"
   ],
 }
 "dataSource": "accounts/{ACCOUNT_ID}/dataSources/1000000573361824"
}

Поле moneyOffAmount в этом примере содержит информацию о скидке, которая предлагается в рамках промоакции. Подробнее об атрибуте "скидка по промоакции в денежном выражении"…

Поле promotionUrl в этом примере содержит ссылку на сайт магазина, где покупатели могут найти дополнительную информацию о промоакции. Если вы не добавите поле promotionUrl, то при попытке запустить промоакцию в рекламе местного ассортимента возникнет ошибка.

Просмотр онлайн-промоакции

В примере ниже показано, как получить информацию об онлайн-промоакции с идентификатором промоакции online~en~US~25_pct_off.

GET https://merchantapi.googleapis.com/promotions/v1/accounts/{ACCOUNT_ID}/promotions/online~en~US~25_pct_off
{
 "name": "accounts/{ACCOUNT_ID}/promotions/online~en~US~25_pct_off",
 "promotionId": "25_pct_off",
 "contentLanguage": "en",
 "targetCountry": "US",
 "redemptionChannel": [
   "ONLINE"
 ],
 "attributes": {
   "longTitle": "10% off on selected items",
   "productApplicability": "SPECIFIC_PRODUCTS",
   "offerType": "GENERIC_CODE",
   "genericRedemptionCode": "WINTERGIFT",
   "couponValueType": "PERCENT_OFF",
   "promotionDisplayTimePeriod": {
     "startTime": "2024-2-06T00:47:44Z",
     "endTime": "2024-5-06T00:47:44Z"
   },
   "promotionEffectiveTimePeriod": {
     "startTime": "2024-2-06T00:47:44Z",
     "endTime": "2024-5-06T00:47:44Z"
   },
   "percentOff": 25,
   "promotionDestinations": [
     "FREE_LISTINGS"
   ],
   "itemIdInclusion": [
     "1499860100",
     "1499860101",
     "1499860102",
     "1499860103",
     "1499860104"
   ],
 }
 "dataSource": "accounts/{ACCOUNT_ID}/dataSources/{dataSource}"
}

В поле itemIdInclusion указаны товары, на которые распространяется промоакция. Подробнее об идентификаторе товара, участвующего в промоакции…

Список промоакций

Чтобы посмотреть все созданные промоакции, используйте метод promotions.list.

Пример запроса:

HTTP

GET https://merchantapi.googleapis.com/promotions/v1/{ACCOUNT_ID}/promotions

cURL

  curl \
   'https://merchantapi.googleapis.com/promotions/v1/accounts/{ACCOUNT_ID}/promotions?key=[YOUR_API_KEY]' \
   --header 'Authorization: Bearer {ACCESS_TOKEN}' \
   --header 'Accept: application/json' \
   --compressed

В ответе будет список всех промоакций в вашем аккаунте. Для каждой промоакции можно посмотреть такие сведения, как promotionId, redemptionChannel, dataSource, promotionStatus и т. д.

Как посмотреть статус промоакции

Чтобы узнать статус промоакции, посмотрите атрибут promotionStatus, возвращаемый методом promotions.get или promotions.list.

Поле promotionStatus может принимать следующие значения:

  • IN_REVIEW: промоакция ещё проверяется.
  • REJECTED: промоакция отклонена.
  • LIVE: промоакция одобрена и активна.
  • STOPPED: промоакция остановлена в аккаунте.
  • EXPIRED – промоакция больше не активна.
  • PENDING – промоакция не остановлена, все проверки пройдены, но дата начала ещё не наступила.
  • STATE_UNSPECIFIED – неизвестный статус промоакции.

Подробнее о проверке промоакций…

Статус промоакции

Ниже приведены примеры успешного и неуспешного запросов.

Отсутствует сопоставление товаров

В теле ответа ниже показана промоакция, которая была отклонена из-за отсутствия сопоставления с товарами.

  "promotionStatus": {
    "destinationStatuses": [
      {
        "reportingContext": "FREE_LISTINGS",
        "status": "REJECTED"
      }
    ],
    "itemLevelIssues": [
      {
        "code": "promotion_sku_unmapped",
        "severity": "DISAPPROVED",
        "resolution": "merchant_action",
        "reportingContext": "FREE_LISTINGS",
        "description": "Unmapped",
        "detail": "This promotion couldn't be tested during review because it doesn't apply to any products that are currently in your Products feed",
        "documentation": "https://support.google.com/merchants/answer/2906014",
        "applicableCountries": [
          "US"
        ]
      },
      {
        "code": "promotion_sku_additional_requirements",
        "severity": "DISAPPROVED",
        "resolution": "merchant_action",
        "reportingContext": "FREE_LISTINGS",
        "description": "Promotion conditions not allowed",
        "detail": "This promotion has additional requirements that are not allowed such as requiring customers to verify additional details like phone number or ID before showing the promotion details",
        "documentation": "https://support.google.com/merchants/answer/2906014",
        "applicableCountries": [
          "US"
        ]
      }
    ]
  }

Подробнее о том, как устранять неполадки с отклоненными промоакциями и избегать их в будущем.

Если промоакция не будет одобрена, вы получите электронное письмо с указанием причины отклонения и инструкциями по устранению проблем.

Промоакция проверяется

В теле ответа ниже показана промоакция, которая ещё проверяется.

  "promotionStatus": {
    "destinationStatuses": [
      {
        "reportingContext": "FREE_LISTINGS",
        "status": "PENDING"
      },
      {
        "destination": "SHOPPING_ADS",
        "status": "PENDING"
      }
    ],
    "itemLevelIssues": []
  }

Одобренная и активная промоакция

В теле ответа ниже показана промоакция, которая видна покупателям.

  "promotionStatus": {
    "destinationStatuses": [
      {
        "reportingContext": "FREE_LISTINGS",
        "status": "LIVE"
      },
      {
        "destination": "SHOPPING_ADS",
        "status": "LIVE"
 }  ],
    "itemLevelIssues": []
  }

Подробнее о статусах промоакций…

Удаление результатов поиска

Удалить промоакцию с помощью API нельзя. Удалить промоакцию можно только в интерфейсе Merchant Center. Подробнее о том, как изменить промоакцию или ее статус…

Чтобы завершить промоакцию, используйте метод accounts.promotions.insert и укажите в поле attributes.promotionEffectiveTimePeriod.endTime дату в прошлом.

Подробнее…