Appearance
Импорт и синхронизация отзывов
Раздел описывает, как перенести отзывы о товарах из другой системы и как держать их в синхронизированном состоянии.
Отдельного метода импорта нет: отзывы переносятся обычным reviews/create. Чтобы перенос был корректным, важны два момента — дата отзыва и идемпотентность.
Дата отзыва
По умолчанию отзыв сохраняется с текущим временем. При импорте это неверно: все перенесенные отзывы получат дату импорта, и отчет по отзывам в личном кабинете покажет резкий всплеск в один день.
Поэтому при импорте всегда передавайте created_at — дату и время, когда клиент оставил отзыв в исходной системе:
shell
curl 'https://api.rees46.ru/reviews/create' \
-X 'POST' \
-H 'Content-Type: application/json' \
--data-raw '{"shop_id":"SHOP_ID", "shop_secret":"SHOP_SECRET", "email":"EMAIL", "product":"SKU-1024", "order":"ORDER-3341", "rating":5, "comment":"Отличная кофемолка", "created_at":"2025-03-14T09:12:00Z"}'Формат: ISO 8601 (2025-03-14T09:12:00Z) или YYYY-MM-DD HH:MM:SS.
Идемпотентность
Отзыв однозначно определяется тройкой: товар + заказ + клиент. Повторный reviews/create с той же тройкой вернет ошибку 400 Review already exists и не создаст дубликат.
Это дает простой алгоритм постоянной синхронизации, безопасный для повторных запусков:
- Вызываете reviews/create.
- Если пришла ошибка
Review already exists— отзыв уже перенесен, вызываете reviews/update с той же тройкой, чтобы подтянуть изменившуюся оценку или текст. - Если в исходной системе отзыв удалили — вызываете reviews/delete.
Собственный идентификатор отзыва из исходной системы хранить не нужно: для адресации достаточно product, order и идентификатора клиента.
Товары и заказы должны быть загружены раньше
reviews/create проверяет, что товар есть в каталоге, а заказ — в платформе. Поэтому импорт отзывов нужно запускать после импорта каталога и импорта заказов, иначе отзывы отвалятся с ошибками Product not found и Order not found.
Статус перенесенных отзывов
Перенесенные отзывы, как и любые новые, создаются в статусе moderation и не попадают в reviews/product.
Если в исходной системе отзывы уже были отмодерированы, пройдите по ним методом reviews/publish сразу после импорта — идентификатор отзыва приходит в ответе reviews/create:
json
{
"status": "success",
"payload": {
"review": {
"id": 1,
"state": "moderation"
}
}
}Отклоненные в исходной системе отзывы переносите и сразу вызывайте reviews/reject — так в платформе останется полная история оценок товара, но в публичную выдачу эти отзывы не попадут.
Клиенты
Клиента передавайте всеми идентификаторами, которые есть в исходной системе — email, phone, loyalty_id, external_id, telegram_id. Нужный клиент будет найден алгоритмом realtime-матчинга, а если его еще нет в CDP, он будет создан.
Идентификатор устройства did при импорте не используется.