Восстановление синхронизации¶
Webhook обеспечивает малую задержку, но не гарантирует хранение всех изменений во
время длительной недоступности партнёра. Для восстановления используйте ReadQuery
или объединённый GetList.
Хранимое состояние¶
Партнёру рекомендуется хранить:
- внутренний
idзаявки CARGO.RUN; - партнёрский
externalId; - последний принятый
updatedAt; - обработанные
eventIdwebhook; - курсор последней успешной сверки;
- статус собственной обработки события.
Алгоритм восстановления¶
- Взять время последней успешной сверки.
- Вычесть несколько секунд для перекрытия.
- Выполнить список с фильтром
updatedAt gt .... - Использовать
$orderby=updatedAt,id. - Обрабатывать страницы до пустого результата.
- Удалять дубли по
id. - Для изменившихся ID выполнить
Read / Bid / Default. - Отдельно запросить фактический маршрут, если он нужен.
- Обновить курсор только после успешной записи всех данных.
ReadQuery эквивалентен GetList без X-Organization-Id. Если восстановление
нужно выполнить отдельно по организации, используйте синхронный GetList с этим
заголовком.
Пример запроса¶
Периодическая сверка¶
Даже при стабильной работе webhook выполняйте контрольную сверку по расписанию. Интервал выбирает партнёр с учётом допустимой задержки и нагрузки.
Повтор задач¶
Если ответ постановки задачи потерян, повторите тот же запрос с тем же Idempotency-Key. Сервер вернёт ранее созданные задачи в течение 24 часов.
Если потерян только webhook queued-task.finished, получите результат задачи через GET /api/integrations/Tasks/Queue, передав taskId в параметре id.