Use promotions to showcase special offers for products you sell on Google. Promotions display across different Google properties, including Google Search, Shopping, and Chrome. Promotions must meet certain criteria to be approved. For more information, see Promotion criteria .
When you add a promotion to your products, shoppers see a special offer link. For example, "15% off" or "Free shipping". Offer links can increase the appeal of your products and encourage shoppers to make a purchase. All promotions are applied at checkout or point of sale.
Для получения более подробной информации см. раздел «Основы продвижения» .
Предварительные требования
Для показа ваших рекламных акций Google требует предоставления конкретной информации о вашем бизнесе и товарах. Вам необходимо иметь следующее:
- Активный товарный фид в Google Merchant Center .
- Активный фид рекламных акций в Google Merchant Center .
- Аккаунт Google Ads для рекламных кампаний в сфере товаров .
Кроме того, вам необходимо зарегистрировать свой аккаунт в Merchant Center в программе рекламных акций. Если вы не уверены, зарегистрированы ли вы уже, проверьте это в Merchant Center .
Если вы еще не зарегистрированы, заполните форму заявки . Команда по продвижению сообщит вам, когда вы будете готовы начать внедрение.
Для получения более подробной информации см. Критерии и правила участия .
Создайте источник данных
You can use the accounts.dataSources.create method to create a promotion data source. If an existing promotion data source is available, use the accounts.dataSources.list method to retrieve all the data sources. You can then use the name field of the promotion data source to create promotions .
В следующем запросе показано, как создать источник данных для добавления рекламных акций:
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"
}
Создавайте рекламные акции
You can use the accounts.promotions.insert method to create or update a promotion. The accounts.promotions.insert method takes a promotions resource and a data source name as input. It returns the new or updated promotion, if successful.
Для создания рекламной акции необходимо указать название источника данных . Также в запросе необходимо указать значения для следующих полей:
-
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
Информацию о правилах, применимых к настройке идентификатора акции, см. в разделе «Минимальные требования к атрибуту идентификатора акции» .
The valid values for the mandatory offerType field are NO_CODE and GENERIC_CODE . If you don't provide one of these values, the API request fails with the HTTP 400 response [offer_type] validation/missing_required: Invalid or missing required attribute: offer_type . A similar error message is returned if you don't provide any of the mandatory fields.
Если вы не укажете значение для поля attributes.genericRedemptionCode , запрос завершится ошибкой HTTP 400 [genericRedemptionCode] No redemption code provided .
The values for the promotion.attributes.promotionDisplayTimePeriod.startTime and promotion.attributes.promotionDisplayTimePeriod.endTime fields must be in the format yyyy-mm-ddThh:mm:ssZ . Make sure to replace the values for these fields with dates that are in the future.
Для получения более подробной информации см. спецификацию данных для рекламных акций .
Рекомендации по созданию рекламных акций см. в разделе «Рекомендации по проведению рекламных акций» .
Список атрибутов, связанных с акциями, см. в разделе «Добавление атрибутов структурированных данных» .
После успешного выполнения запроса на создание рекламной акции может потребоваться несколько минут, прежде чем акция станет доступна через API или отобразится в Центре продавцов.
Вот пример, который можно использовать для асинхронной вставки нескольких рекламных объявлений:
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.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().setPoolSize(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>");
}
}
Ниже приведены несколько примеров рекламных акций, которые вы можете использовать для начала работы.
Местная акция, распространяющаяся на все товары и все магазины.
The following sample request shows how to create a local promotion that is applicable for all the products in your Merchant Center account and all the stores added in your linked Business Profile account.
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}"
}
The productApplicability field is required. It signals the applicability of the promotion to either all products or only specific ones. The supported values are ALL_PRODUCTS and SPECIFIC_PRODUCTS . For more information, see Choose products for your promotion .
The couponValueType field is required. It signals the type of promotion that you are running. For the list of support values, see Coupon value type . Depending on the type of coupon value you selected, some attributes are required .
The minimumPurchaseQuantity field lets you set the value for the minimum purchase quantity that is required to redeem the promotion offering. For more information, see Minimum purchase quantity for promotion .
Аналогичным образом, вы можете использовать поле 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"
}
Посмотреть акции
To view a promotion, use accounts.promotions.get . This GET request is read-only. It requires your merchantId and the ID of the promotion. The GET method returns the corresponding promotions resource.
Например:
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 отображает размер скидки, предлагаемой в рамках акции. Для получения дополнительной информации см. раздел «Размер денежной скидки в рамках акции» .
The promotionUrl field in this sample provides the link to the store's website where shoppers can find more information about the promotion. Local inventory ads promotions return an error if you don't include the promotionUrl field.
Посмотреть онлайн-акцию
Следующий пример запроса извлекает онлайн-акцию с идентификатором 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
The response contains the list of all the promotions in your account. For each promotion, you can see details like the promotionId , redemptionChannel , dataSource , promotionStatus , and more.
Посмотреть статус акции
Чтобы узнать статус акции, см. атрибут 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": []
}
Для получения более подробной информации см. раздел «Часто задаваемые вопросы о статусе продвижения» .
Удалить рекламные акции
It isn't possible to delete a promotion using the API. To delete a promotion, you will need to access the Merchant Center UI. For more information, see Edit a promotion or change promotion status .
Чтобы завершить существующую акцию, вы можете использовать метод accounts.promotions.insert для обновления поля attributes.promotionEffectiveTimePeriod.endTime , указав время в прошлом.
Узнать больше
- Более подробную информацию можно найти в Справочном центре по рекламным акциям .
- Для устранения распространенных проблем см. раздел «Устранение неполадок, связанных с под-API Promotions» .
- Чтобы узнать о миграции с Content API for Shopping, см. раздел «Миграция управления акциями» .