Перейти до вмісту

Повтор і Машина часу

Дві операції легко сплутати. Повторне надсилання доставки повертає ту саму доставку на її драбину повторів. Повтор подій створює нові доставки з подій, які 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 “Повтор подій за проміжок часу”
  1. Спершу оцініть обсяг. 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"}'
  2. Запустіть повтор через POST /api/v1/projects/{projectId}/replay з тим самим тілом. fromDate і toDate обов’язкові; eventType, endpointId і sourceStatus звужують вибірку. Відповідь — 201 із сесією.

  3. Стежте за сесією через 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.