Вопросы покупателей о товарах
API для работы с вопросами покупателей о товарах. Покупатели могут задавать вопросы о характеристиках товаров, а продавец — отвечать на них через API. Уточняющие ответы помогают потенциальным покупателям с выбором и снижают риск отказа от товара.
С помощью API вы можете:
- Получить список всех вопросов или отфильтровать по статусу, источнику ответа, периоду
- Ответить на новый вопрос
- Отредактировать свой ответ на вопрос, пока он находится на модерации
Авторизация
Все методы требуют OAuth-токен в заголовке:
Authorization: Bearer {access_token}
Во всех запросах обязателен параметр sellerId. Значение должно соответствовать sellerId из JWT-токена, иначе вернётся ошибка 403.
Методы
1. Получение списка вопросов
GET /api/v2/feedback/questions
Возвращает список вопросов покупателей с возможностью фильтрации, сортировки и группировки по товару.
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
sellerId
|
string | Да | Идентификатор продавца |
page
|
integer | Нет | Номер страницы (по умолчанию: 1) |
limit
|
integer | Нет | Количество на странице (максимум: 50) |
sort
|
string | Нет |
Сортировка. Формат: поле или -поле для сортировки по убыванию. Доступное значение: createdAt. По умолчанию: createdAt
|
createdFrom
|
datetime | Нет |
Начало периода создания (ISO 8601 UTC, включительно). Пример: 2025-12-01T00:00:00Z
|
createdTo
|
datetime | Нет |
Конец периода создания (ISO 8601 UTC, не включительно). Пример: 2025-12-31T00:00:00Z
|
search
|
string | Нет | Поисковая строка для фильтрации вопросов. Поиск по названию товара, бренду, SKU. Максимум 1000 символов |
isGrouped
|
boolean | Нет | Группировать вывод вопросов по товару |
status
|
string | Нет | Фильтр по статусу вопроса. См. Статусы вопросов |
answerStatus
|
string | Нет | Фильтр по статусу ответа. См. Статусы ответов |
answerSource
|
array<string> | Нет |
Фильтр по источнику ответа. Значения: SELLER, LAMODA
|
id
|
array<string> | Нет | Массив UUID вопросов для фильтрации |
Пример запроса
GET /api/v2/feedback/questions?sellerId=242541217&page=1&limit=25&sort=-createdAt&status=NEW HTTP/1.1
Authorization: Bearer {access_token}
Успешный ответ (200)
{
"data": [
{
"product": {
"parentSku": "MP002XW0J7E6R",
"sku": "MP002XW0J7E6R660",
"externalSku": "77122JSS-8",
"name": "Тоник для лица",
"brand": "New Balance"
},
"items": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"createdAt": "2025-12-20T10:30:15.000Z",
"dateAnswerUntil": "2025-12-27T10:30:15.000Z",
"username": "Мария",
"text": "Подходит ли этот тоник для чувствительной кожи?",
"canAnswer": true,
"answerSource": "SELLER",
"answers": [],
"status": "NEW"
}
]
}
],
"meta": {
"limit": 25,
"page": 1,
"total": 120,
"totalPages": 5
}
}
Структура объекта product
| Поле | Тип | Описание |
parentSku
|
string | SKU товара (родительский) |
sku
|
string | Размерный SKU товара |
externalSku
|
string | Внешний размерный SKU товара (артикул продавца) |
name
|
string | Название товара |
brand
|
string | Название бренда (опционально) |
Структура объекта вопроса (items[])
| Поле | Тип | Описание |
id
|
string (UUID) | Уникальный идентификатор вопроса |
createdAt
|
datetime | Дата и время создания вопроса |
dateAnswerUntil
|
datetime | Крайний срок для ответа на вопрос (опционально) |
username
|
string | Имя пользователя, задавшего вопрос |
text
|
string | Текст вопроса |
canAnswer
|
boolean | Доступно ли действие «Ответить» на данный вопрос (опционально) |
answerSource
|
string |
Источник ответа: SELLER или LAMODA (опционально)
|
answers
|
array | Массив ответов на вопрос. См. Структура ответа |
status
|
string | Статус вопроса. См. Статусы вопросов |
Структура объекта ответа (answers[])
| Поле | Тип | Описание |
createdAt
|
datetime | Дата и время создания ответа |
text
|
string | Текст ответа |
source
|
string |
Источник ответа: SELLER или LAMODA (опционально)
|
status
|
string | Статус ответа. См. Статусы ответов (опционально) |
rejectReason
|
string | Причина отклонения ответа модерацией (опционально) |
2. Ответ на вопрос покупателя
POST /api/v2/feedback/questions/{questionId}/answer
Записывает ответ продавца на вопрос покупателя. Также используется для редактирования ответа, который ещё находится на модерации.
Параметры пути
| Параметр | Тип | Обязательный | Описание |
questionId
|
string (UUID) | Да | ID вопроса |
Тело запроса
| Поле | Тип | Обязательный | Описание |
sellerId
|
string | Да |
Идентификатор продавца. Должен соответствовать sellerId из JWT-токена
|
text
|
string | Да | Текст ответа на вопрос. От 1 до 1000 символов |
Пример запроса
POST /api/v2/feedback/questions/550e8400-e29b-41d4-a716-446655440000/answer HTTP/1.1
Authorization: Bearer {access_token}
Content-Type: application/json
{
"sellerId": "242541217",
"text": "Да, тоник подходит для чувствительной кожи. Он не содержит спирта и агрессивных ПАВ."
}
Успешный ответ (200)
{
"questionId": "550e8400-e29b-41d4-a716-446655440000",
"createdAt": "2025-12-21T14:15:00.000Z",
"text": "Да, тоник подходит для чувствительной кожи. Он не содержит спирта и агрессивных ПАВ.",
"source": "SELLER",
"status": "ON_MODERATION"
}
Структура ответа
| Поле | Тип | Описание |
questionId
|
string (UUID) | ID вопроса, на который дан ответ |
createdAt
|
datetime | Дата и время создания ответа |
text
|
string | Текст ответа |
source
|
string |
Источник ответа: SELLER или LAMODA (опционально)
|
status
|
string | Статус ответа (опционально). См. Статусы ответов |
rejectReason
|
string | Причина отклонения модерацией (опционально) |
canAnswer = true. Если вопрос уже промодерирован, будет возвращена ошибка 400.
Справочники
Статусы вопросов (QuestionStatus)
| Статус | Описание |
NEW
|
Новый вопрос, ожидает ответа |
IN_PROGRESS
|
В процессе обработки |
ANSWERED
|
На вопрос дан ответ |
REJECTED
|
Вопрос отклонён |
Статусы ответов (QuestionAnswerStatus)
| Статус | Описание |
ON_MODERATION
|
Ответ на модерации. Можно отредактировать, повторно вызвав метод ответа |
APPROVED
|
Ответ одобрен модерацией и опубликован |
REJECTED
|
Ответ отклонён модерацией. Причина указана в поле rejectReason
|
Источники ответов (QuestionAnswerSource)
| Значение | Описание |
SELLER
|
Ответ дан продавцом |
LAMODA
|
Ответ дан командой Lamoda |
Коды ошибок
| HTTP-код | Описание |
| 400 | Некорректный запрос. Например, вопрос уже промодерирован и редактирование ответа невозможно |
| 401 | Ошибка авторизации. Проверьте OAuth-токен |
| 403 |
Доступ запрещён. sellerId не соответствует токену
|
| 404 | Вопрос не найден |
| 503 | Сервис временно недоступен |
Пример: типовой сценарий обработки вопросов
Шаг 1. Получите список новых вопросов:
GET /api/v2/feedback/questions?sellerId=242541217&status=NEW&sort=-createdAt&limit=50
Шаг 2. Для каждого вопроса с canAnswer: true отправьте ответ:
POST /api/v2/feedback/questions/{questionId}/answer
{
"sellerId": "242541217",
"text": "Ваш ответ на вопрос покупателя"
}
Шаг 3. Отслеживайте статусы ответов. Получите вопросы с отклонёнными ответами:
GET /api/v2/feedback/questions?sellerId=242541217&answerStatus=REJECTED
Шаг 4. При необходимости отредактируйте ответ (пока он на модерации), повторно вызвав метод ответа с новым текстом.
Пагинация
Для получения всех вопросов используйте пагинацию:
// Страница 1
GET /api/v2/feedback/questions?sellerId=242541217&page=1&limit=50
// Страница 2
GET /api/v2/feedback/questions?sellerId=242541217&page=2&limit=50
// Продолжайте, пока page <= meta.totalPages
В ответе поле meta содержит информацию о пагинации:
| Поле | Тип | Описание |
limit
|
integer | Количество элементов на странице |
page
|
integer | Текущая страница |
total
|
integer | Общее количество вопросов |
totalPages
|
integer | Общее количество страниц |
См. также
Помогла эта информация?
Спасибо за отзыв