Переотправка нотификаций
Lamoda B2B Platform Partner API позволяет запросить повторную отправку нотификаций по заказам. Это полезно, если ваш сервис был недоступен или вы потеряли часть данных.
Когда использовать
Переотправка нужна в следующих случаях:
- Ваш сервис был недоступен и пропустил нотификации
- Произошла ошибка обработки и данные не сохранились
- Нужно синхронизировать состояние заказов после сбоя
- Вы мигрируете на новую систему и хотите получить актуальные статусы
Метод API: переотправка
GET /api/v1/notifications/resend — запрос на переотправку нотификаций по переданным номерам заказов.
| Предусловие | Заказы должны быть созданы в Lamoda B2B Platform Partner API. Подключен и настроен сервис отправки API-нотификаций. |
| Триггер | Необходимо повторно получить нотификации по статусу заказа или товара. |
| Результат | Lamoda B2B Platform Partner API переотправит все имеющиеся нотификации для указанных заказов в хронологическом порядке. |
Формат запроса
В теле запроса передаётся JSON-объект с массивом номеров заказов (trackingId) в поле trackingIdCollection.
| Поле | Тип | Обязательное | Описание |
trackingIdCollection
|
string[] | Да | Массив номеров заказов (trackingId). Максимум 100 элементов. Каждый элемент — непустая строка, соответствующая формату номера заказа. |
partnerId
|
integer | null | Нет | ID партнёра. Если не указан, определяется автоматически из OAuth-токена авторизации. Используется мультипартнёрскими аккаунтами. |
Формат trackingId должен соответствовать номеру заказа (строка из заглавных латинских букв, цифр и дефисов, длиной от 3 до 20 символов).
GET /api/v1/notifications/resend Content-Type: application/json Authorization: Bearer {access_token} { "trackingIdCollection": [ "55566123", "55566124", "55566125" ] }
Формат ответа
В успешном ответе возвращается массив объектов с номерами заказов, принятых к обработке. Для каждого заказа возвращается столько записей, сколько нотификаций будет переотправлено.
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"trackingId": "55566123",
"inProgressUntil": "2025-12-02 15:52:01"
},
{
"trackingId": "55566123",
"inProgressUntil": "2025-12-02 15:52:01"
},
{
"trackingId": "55566124",
"inProgressUntil": "2025-12-02 15:52:01"
}
]
В примере выше для заказа 55566123 будет переотправлено 2 нотификации, для 55566124 — 1 нотификация.
| Поле | Тип | Описание |
trackingId
|
string | Номер заказа |
inProgressUntil
|
string |
Метка времени обработки запроса (формат YYYY-MM-DD HH:MM:SS)
|
Если запрошенный заказ не найден в системе нотификаций, он просто не будет включён в ответ (без ошибки).
Как работает переотправка
При переотправке система находит все ранее созданные нотификации для указанных заказов, сбрасывает их статус и помещает в очередь на повторную отправку. Нотификации отправляются на тот же URL, который настроен для получения нотификаций.
Порядок переотправки
Нотификации переотправляются в хронологическом порядке их создания (по created_at ASC):
- Сначала statusChanged при создании заказа
- Затем statusChanged при подтверждении
- Затем statusChanged при отгрузке
- И так далее, включая itemStatusChanged и fulfilmentShipmentStatusChanged
Убедитесь, что ваш сервис готов принять повторные нотификации и корректно обработает дубликаты.
Ограничения
| Максимум заказов в запросе | 100 |
| Минимальный интервал | Между повторными запросами для одного заказа действует rate limit (конфигурируемый интервал на стороне сервера) |
Номер заказа может быть передан в запросе на переотправку нотификаций не чаще, чем раз в несколько минут. При повторной отправке раньше разрешённого времени вернётся ошибка 429 Too Many Requests.
Ошибки
400 Bad Request — ошибка валидации (неверный формат trackingId):
{
"code": 400,
"message": [
{
"trackingId": "123",
"message": "This value is not valid."
}
]
}
401 Unauthorized — ошибка авторизации:
{
"code": 401,
"description": "...",
"message": "OAuth2 authentication required",
"errors": []
}
429 Too Many Requests — rate limit (повторный запрос для заказа, который ещё в обработке):
{
"code": 429,
"description": "Rate limit has been reached",
"message": "Operation is in progress for tracking id '55566123'"
}
500 Internal Server Error — внутренняя ошибка сервера:
{
"code": 500,
"description": "...",
"message": "Internal server error",
"errors": []
}
Просмотр истории нотификаций
Перед переотправкой можно проверить, какие нотификации существуют для конкретного заказа:
GET /api/v1/notifications — получение списка нотификаций по заказу.
| Параметр | Тип | Обязательный | Описание |
order_id
|
string | Да |
Номер заказа (формат: ^[A-Z0-9-]{3,20}$)
|
limit
|
integer | Нет | Количество записей на страницу (по умолчанию 25) |
page
|
integer | Нет | Номер страницы (по умолчанию 1) |
GET /api/v1/notifications?order_id=55566123&limit=10&page=1
Authorization: Bearer {access_token}
Этот метод можно использовать для диагностики: проверить, были ли нотификации созданы, и в каком они статусе.
Рекомендации
- Идемпотентность — ваш обработчик должен корректно обрабатывать повторные нотификации с одинаковым
sequenceNumber - Не запрашивайте все заказы — указывайте только те, по которым действительно нужна синхронизация
- Учитывайте нагрузку — при запросе 100 заказов с большой историей изменений вы получите сотни нотификаций за короткое время
- Проверяйте пустой ответ — если заказ не найден в системе нотификаций, он просто не попадёт в ответ; пустой массив
[]означает, что ни один из запрошенных заказов не найден - Используйте GET для диагностики — перед переотправкой проверьте историю нотификаций через
GET /api/v1/notifications?order_id=...
См. также
Помогла эта информация?
Спасибо за отзыв