Закрепить отзывы
http
POST /api/feedbacks/v1/pinsБаза: https://feedbacks-api.wildberries.ru · Модуль: communications · Раздел: Закреплённые отзывы · Документация спецификации ↗
Метод позволяет закрепить отзывы в карточке товара или в группе объединённых карточек. Чтобы получить ID отзывов, используйте метод Список закреплённых и откреплённых отзывов.
Метод доступен по подписке Джем или c тарифной опцией **Закрепление отзыва**.
Лимит запросов на один профиль продавца для всех методов категории Вопросы и отзывы:
| Тип | Период | Лимит | Интервал | Всплеск |
|---|---|---|---|---|
| Персональный | 1 сек | 3 запроса | 333 мс | 6 запросов |
| Сервисный | 1 сек | 3 запроса | 333 мс | 6 запросов |
| Базовый с секретом | 1 сек | 3 запроса | 333 мс | 6 запросов |
| Базовый | 1 ч | 5 запросов | 12 мин | 1 запрос |
Тело запроса
application/json — схема openapi.PinReviewItem[], обязательно
pinMethodstring=tariff|subscription(обязательно) — Метод закрепления: -subscription— подписка Джем -tariff— тарифная опцияpinOnstring=nm|imt(обязательно) — Место закрепления отзыва: -nm— карточка товара -imt— группа объединённых карточек товаровfeedbackIdstring(обязательно) — ID отзыва
Ответы
| Код | Описание | Схема |
|---|---|---|
200 | Успешно | PostV1PinsResponse200 |
400 | Неправильный запрос | respond.ResultErr |
401 | Не авторизован | object |
402 | Требуется платёж | object |
403 | Доступ запрещён | respond.ResultErr |
429 | Слишком много запросов | object |
Структура 200:
dataobject[]feedbackIdstring— ID отзываpinIdinteger<int64>— ID операции закрепления. Если поле отсутствует — закрепить отзыв не удалосьpinMethodstring=tariff|subscription— Метод закрепления: -subscription— подписка Джем -tariff— тарифная опцияpinOnstring=nm|imt— Место закрепления отзыва: -nm— карточка товара -imt— группа объединённых карточек товаровisErrorsboolean— Есть ли ошибкиerrorsopenapi.ResultErr[]— Детали ошибокoriginstring— ID внутреннего сервиса WBdetailstring— Детали ошибкиrequestIdstring— ID запросаstatusstring=feedbackNotFound|itemNotFound|feedbackMismatch|itemNoImages|feedbackExcluded|imtNotDisplayed|globalLimitReached|unitLimitReached|tariffRestriction|subscriptionRestriction|alreadyPinned|bodyNotValid— Статусtitlestring— Заголовок ошибки
Структура 400:
detailstring— Детали ошибкиoriginstring— ID внутреннего сервиса WBrequestIdstring— ID запросаstatusinteger<int64>— HTTP статус-кодtitlestring— Заголовок ошибки
Структура 401:
titlestring— Заголовок ошибкиdetailstring— Детали ошибкиcodestring— Внутренний код ошибкиrequestIdstring— Уникальный ID запросаoriginstring— ID внутреннего сервиса WBstatusnumber— HTTP статус-кодstatusTextstring— Расшифровка HTTP статус-кодаtimestampstring— Дата и время запроса
Структура 402:
titlestring— Заголовок ошибкиdetailstring— Детали ошибки. Ошибка возвращается только сервисам из Каталога решений для бизнеса
Структура 403:
detailstring— Детали ошибкиoriginstring— ID внутреннего сервиса WBrequestIdstring— ID запросаstatusinteger<int64>— HTTP статус-кодtitlestring— Заголовок ошибки
Структура 429:
titlestring— Заголовок ошибкиdetailstring— Детали ошибкиcodestring— Внутренний код ошибкиrequestIdstring— Уникальный ID запросаoriginstring— ID внутреннего сервиса WBstatusnumber— HTTP статус-кодstatusTextstring— Расшифровка HTTP статус-кодаtimestampstring— Дата и время запроса
Примеры вызова
Аргументы показаны именами параметров — подставьте свои значения. Языки, в клиенте которых этой операции нет, не показаны.
python
from wb_api_client.communications import Configuration, ApiClient
from wb_api_client.communications.api import CommunicationsApi
cfg = Configuration(access_token="<ваш JWT WB>")
api = CommunicationsApi(ApiClient(cfg))
result = api.post_v1_pins(openapi_pin_review_item=...)
print(result)ts
import {
Configuration,
CommunicationsApi,
} from "@valeryverkhoturov/wb-api-client/communications";
const cfg = new Configuration({});
cfg.setAccessToken("<ваш JWT WB>");
const api = new CommunicationsApi(cfg);
const { data } = await api.postV1Pins(openapiPinReviewItem);
console.log(data);go
import (
"context"
"fmt"
wbcommunications "github.com/ValeryVerkhoturov/wb-api-client-go/communications"
)
cfg := wbcommunications.NewConfiguration()
cfg.SetAccessToken("<ваш JWT WB>")
client := wbcommunications.NewAPIClient(cfg)
result, _, err := client.CommunicationsAPI.PostV1Pins(context.Background()).OpenapiPinReviewItem(openapiPinReviewItem).Execute()
if err != nil {
panic(err)
}
fmt.Printf("%+v\n", result)java
import io.github.valeryverkhoturov.wbapi.communications.ApiClient;
import io.github.valeryverkhoturov.wbapi.communications.SecretString;
import io.github.valeryverkhoturov.wbapi.communications.api.CommunicationsApi;
ApiClient client = new ApiClient();
client.setAccessToken(new SecretString("<ваш JWT WB>"));
CommunicationsApi api = new CommunicationsApi(client);
System.out.println(api.postV1Pins(openapiPinReviewItem));php
use ValeryVerkhoturov\WbApiClient\Communications\Configuration;
use ValeryVerkhoturov\WbApiClient\Communications\SecretString;
use ValeryVerkhoturov\WbApiClient\Communications\Api\CommunicationsApi;
use GuzzleHttp\Client;
$config = (new Configuration())
->setAccessTokenSecret(new SecretString('<ваш JWT WB>'));
$api = new CommunicationsApi(new Client(), $config);
print_r($api->postV1Pins($openapi_pin_review_item));bsl
#Использовать "wb-api-client"
Настройки = Новый Конфигурация();
Настройки.УстановитьТокен("<ваш JWT WB>");
Клиент = Новый CommunicationsApi(Настройки);
Сообщить(Клиент.PostV1Pins(Тело).Тело);csharp
using ValeryVerkhoturov.WbApiClient.Communications.Api;
using ValeryVerkhoturov.WbApiClient.Communications.Client;
var config = new Configuration();
config.AccessTokenSecret = new SecretString("<ваш JWT WB>");
var api = new CommunicationsApi(config);
Console.WriteLine(api.PostV1Pins(openapiPinReviewItem));rust
use wb_api_client::communications::apis::{configuration::Configuration, communications_api};
#[tokio::main]
async fn main() {
let mut cfg = Configuration::new();
cfg.set_access_token("<ваш JWT WB>");
let result = communications_api::post_v1_pins(&cfg, openapi_period_pin_review_item).await;
println!("{:#?}", result);
}