Повтор і Машина часу
Дві операції легко сплутати. Повторне надсилання доставки повертає ту саму доставку на її драбину повторів. Повтор подій створює нові доставки з подій, які Railhook уже зберіг. У панелі повтор подій називається «Машина часу».
Що з цього вам потрібно
Section titled “Що з цього вам потрібно”| Повторне надсилання доставки | Повтор подій (Машина часу) | |
|---|---|---|
| Працює з | Однією наявною доставкою | Збереженими подіями за проміжок часу |
| Ідентифікатор доставки | Зберігається | Новий |
| Порядковий номер | Зберігається | Новий, тож доставка стає в чергу за живим трафіком |
Idempotency-Key |
Зберігається | <event id>-<endpoint id> |
| Первісна доставка | Рухається знову | Лишається недоторканою |
| Коли потрібно | Одна доставка впала, а отримувача вже виправлено | Отримувач втратив дані або новому ендпоінту потрібна історія |
Повторне надсилання однієї доставки
Section titled “Повторне надсилання однієї доставки”POST /api/v1/deliveries/{id}/replay повертає доставку в PENDING з лічильником спроб на нулі й ставить її в чергу. Відповідь — 202. Доставку, яка вже вдалася, відхиляють, а не надсилають удруге.
Два параметри запиту змінюють поведінку:
| Параметр | Дія |
|---|---|
dryRun=true |
Нічого не надсилає. Повертає цільовий URL, тип події, payload, Idempotency-Key, який було б надіслано, попередні спроби й план: WILL_SEND, SKIP, якщо доставка вже вдалася, або BLOCKED, якщо ендпоінт вимкнено. |
fromAttempt=N |
Встановлює лічильник спроб на N-1, тож наступний запит буде спробою N, а подальші очікування продовжаться з цього місця драбини. N має бути від 1 до кількості вже зроблених спроб. |
Використовуйте fromAttempt, коли починати з очікування в одну хвилину недоречно, наприклад, після того як отримувач годинами лежав, або коли потрібні залишкові спроби, а не новий комплект.
Щоб повторно надіслати багато доставок одразу, скористайтеся POST /api/v1/deliveries/bulk-replay зі списком до 1000 deliveryIds або з projectId, фільтрами status і endpointId та limit до 5000. Відповідь показує, скільки доставок повторено, скільки пропущено і чи збіглося більше.
Полишені доставки також можна повторити з «Невдалих повідомлень», див. Повторні спроби та невдалі повідомлення.
Повтор подій за проміжок часу
Section titled “Повтор подій за проміжок часу”-
Спершу оцініть обсяг.
POST /api/v1/projects/{projectId}/replay/estimateприймає те саме тіло, що й повтор, і нічого не створює. Він повертає, скільки подій і активних підписок збігається, скільки доставок буде створено, та попередження, якщо проміжок завеликий.Terminal window curl -X POST "$RAILHOOK_URL/api/v1/projects/$PROJECT_ID/replay/estimate" \-H "X-API-Key: $API_KEY" \-H "Content-Type: application/json" \-d '{"fromDate":"2026-09-01T00:00:00Z","toDate":"2026-09-02T00:00:00Z","eventType":"order.completed"}' -
Запустіть повтор через
POST /api/v1/projects/{projectId}/replayз тим самим тілом.fromDateіtoDateобов’язкові;eventType,endpointIdіsourceStatusзвужують вибірку. Відповідь —201із сесією. -
Стежте за сесією через
GET /api/v1/projects/{projectId}/replay/{sessionId}або зупиніть її черезPOST /api/v1/projects/{projectId}/replay/{sessionId}/cancel.
Повтор створює одну доставку на кожну збережену подію й кожну активну підписку, що збігається. Впорядковані ендпоінти отримують нові порядкові номери, тож повторені доставки чекають за живими, а не стикаються з ними.
| Обмеження | Значення |
|---|---|
| Сесій повтору одночасно, на проєкт | 2 |
| Подій в одній сесії | REPLAY_MAX_EVENTS_PER_SESSION, типово 500000 |
Повтор вхідних вебхуків
Section titled “Повтор вхідних вебхуків”Вхідні події теж можна повторити — на всі призначення їхнього джерела:
- Одна подія:
POST /api/v1/projects/{projectId}/incoming-events/{id}/replay. - Багато подій:
POST /api/v1/projects/{projectId}/incoming-events/bulk-replayз обов’язковимsourceIdі або спискомeventIds, або проміжкомfromіto, з необов’язковим фільтромverifiedта обмеженнямmaxEvents.
Кожен повтор створює нові пересилання, які знову починаються зі спроби 1.