Caputchin
Vérification hébergée

Référence de la charge du webhook

Quand un envoi réussit la vérification, le relais envoie un POST vers l'URL de webhook que tu as configurée. Cette page est le contrat exact pour cette requête. Pour la marche à suivre de configuration, vois configurer la vérification hébergée ; pour le concept, vois vérifier sans backend.

Ligne de requête et en-têtes

Le relais envoie un POST avec un corps JSON et ces en-têtes :

En-têteValeur
content-typeapplication/json
acceptapplication/json
user-agentCaputchin-Forwarder/0.1
x-caputchin-test1, présent seulement sur un Tester l'envoi du tableau de bord ; absent sur les envois réels

L'appel est envoyé avec les redirections désactivées et un délai de quelques secondes. La requête n'est pas signée ; c'est le secret de l'URL du webhook qui l'authentifie.

Corps

Le corps est un objet JSON avec deux clés de premier niveau, caputchin (les métadonnées de vérification que Caputchin ajoute) et form (tes champs envoyés) :

{
  "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!"
  }
}

L'objet caputchin

ChampTypeSignification
site_keystringLa clé publique cpt_pub_... d'où venait l'envoi.
session_idstringUn id de session de vérification opaque, utile pour la corrélation ou la déduplication. Sur un envoi de test, il est préfixé test_.
game_idstring ou nullLe jeu que le visiteur a joué. Null quand la vérification a tourné sans jeu.
scorenumber ou nullLe score du jeu. Métadonnée revendiquée par le client pour l'analytique, jamais un signal de confiance. Null quand non applicable.
duration_msnumber ou nullCombien de temps le visiteur a passé à jouer le jeu, en millisecondes. Revendiqué par le client, pas un signal de confiance. Null quand non applicable (par exemple une vérification sans jeu).
verified_atnumberQuand Caputchin a vérifié le token, en epoch Unix en millisecondes.
testboolean (optionnel)Présent et true seulement sur un envoi de test du tableau de bord. Absent sur les envois réels.

game_id, score et duration_ms sont chacun nullable sur un envoi réel, donc protège-toi contre null avant de les lire. Aucun des champs caputchin n'est une décision de confiance : la confiance est que la requête soit arrivée tout court, parce qu'un envoi qui échoue à la vérification n'est jamais relayé.

L'objet form

form est un objet plat de tes champs envoyés sous forme de clés string et de valeurs string, exactement comme posté, avec un changement : le champ caputchin-token est retiré avant la livraison, donc il n'apparaît jamais ici. Le relais accepte seulement les champs texte ; un envoi portant un téléversement de fichier est rejeté avant toute livraison.

Ce que ton handler devrait renvoyer

Renvoie n'importe quel statut 2xx pour accuser réception. Le relais traite une réponse non-2xx, un délai dépassé, ou un échec de connexion comme une livraison échouée, et une livraison échouée n'est pas réessayée. Suis la santé de livraison sur la page statistiques.

Voir aussi

Sur cette page