Webhook signatures
Qué vas a lograr: validar que un Stitch viene de Tsuzuro y no es un replay.
Tsuzuro-Signature: t=1700000000,v1=<hex_hmac>Payload firmado
Sección titulada «Payload firmado»${timestamp}.${rawBody}Verificación con SDK
Sección titulada «Verificación con SDK»import { stitches } from "@tsuzuro/sdk";
const parsed = await stitches.parse(req, { secret: process.env.TSUZURO_WEBHOOK_SECRET!});
console.log(parsed.payload);Verificación manual
Sección titulada «Verificación manual»import { verifyWebhookSignature } from "@tsuzuro/sdk";
const ok = verifyWebhookSignature({ secret: process.env.TSUZURO_WEBHOOK_SECRET!, header: req.headers.get("Tsuzuro-Signature")!, payload: rawBody});La tolerancia default contra replay es 300 segundos.