Caputchin
Размещённая проверка

Справочник нагрузки вебхука

Когда отправка проходит проверку, пересыльщик шлёт один POST на твой настроенный URL вебхука. Эта страница это точный контракт для этого запроса. Для прохождения настройки смотри настрой размещённую проверку; для концепции смотри проверяй без бэкенда.

Строка запроса и заголовки

Пересыльщик шлёт POST с телом JSON и этими заголовками:

ЗаголовокЗначение
content-typeapplication/json
acceptapplication/json
user-agentCaputchin-Forwarder/0.1
x-caputchin-test1, присутствует только на Тест доставки из панели; отсутствует на реальных отправках

Вызов отправляется с отключёнными редиректами и тайм-аутом в несколько секунд. Запрос не подписывается; секретность URL вебхука и есть то, что его аутентифицирует.

Тело

Тело это объект JSON с двумя ключами верхнего уровня, caputchin (метаданные проверки, которые добавляет Caputchin) и form (твои отправленные поля):

{
  "caputchin": {
    "site_key": "cpt_pub_...",
    "session_id": "...",
    "game_id": "caputchin/games/leaf-memory",
    "score": 847,
    "duration_ms": 4200,
    "verified_at": 1748640000000
  },
  "form": {
    "email": "visitor@example.com",
    "message": "Hello!"
  }
}

Объект caputchin

ПолеТипЗначение
site_keyстрокаПубличный ключ cpt_pub_..., с которого пришла отправка.
session_idстрокаНепрозрачный id сессии проверки, полезен для корреляции или дедупликации. На тестовой доставке он с префиксом test_.
game_idстрока или nullИгра, в которую играл посетитель. Null, когда проверка шла без игры.
scoreчисло или nullСчёт игры. Заявленные клиентом метаданные для аналитики, никогда не сигнал доверия. Null, когда неприменимо.
duration_msчисло или nullСколько посетитель провёл за игрой, в миллисекундах. Заявлено клиентом, не сигнал доверия. Null, когда неприменимо (например проверка без игры).
verified_atчислоКогда Caputchin проверил токен, как Unix-эпоха в миллисекундах.
testбулево (опционально)Присутствует и true только на тестовой доставке из панели. Отсутствует на реальных отправках.

game_id, score и duration_ms каждое nullable на реальной отправке, так что страхуйся от null до того, как их читать. Ни одно из полей caputchin не является решением о доверии: доверие в том, что запрос вообще пришёл, потому что отправка, которая не проходит проверку, никогда не пересылается.

Объект form

form это плоский объект твоих отправленных полей как строковые ключи и строковые значения, ровно как отправлено, с одним изменением: поле caputchin-token убирается до доставки, так что оно никогда здесь не появляется. Пересыльщик принимает только текстовые поля; отправка, несущая загрузку файла, отклоняется до любой доставки.

Что должен возвращать твой обработчик

Возвращай любой статус 2xx, чтобы подтвердить получение. Пересыльщик трактует ответ не-2xx, тайм-аут или сбой соединения как сбойную доставку, а сбойная доставка не повторяется. Отслеживай здоровье доставки на странице статистики.

См. также

На этой странице