Skip to content

Импорт и синхронизация отзывов ​

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

Отдельного метода импорта нет: отзывы переносятся обычным 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 и не создаст дубликат.

Это дает простой алгоритм постоянной синхронизации, безопасный для повторных запусков:

  1. Вызываете reviews/create.
  2. Если пришла ошибка Review already exists — отзыв уже перенесен, вызываете reviews/update с той же тройкой, чтобы подтянуть изменившуюся оценку или текст.
  3. Если в исходной системе отзыв удалили — вызываете 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 при импорте не используется.