Function planvortexWebhooks

  • Middleware de Express que verifica la firma y te entrega los cambios.

    app.post(
    "/webhooks/planvortex",
    planvortexWebhooks({
    secret: process.env.PLANVORTEX_CLIENT_SECRET!,
    onChanges: async (changes) => {
    for (const change of changes) {
    if (isCommentChange(change)) await moderate(change.commentObj);
    }
    },
    }),
    );

    No hace falta express.raw() delante: si no encuentra cuerpo, lee el flujo él mismo. Lo que no puede es arreglar un express.json() global, porque ése ya se bebió los bytes y los devuelve convertidos en objeto — ahí responde 400 diciendo exactamente eso.

    Responde él: 200 si todo fue bien, 401 si la firma no cuadra o falta, 400 si el cuerpo no sirve, y 500 si tu onChanges lanza (que además llega a next, para que lo vea tu manejador de errores). Por eso va al final de la cadena y no lleva un next() de paso.

    Parameters

    Returns (
        request: WebhookRequestLike,
        response: WebhookResponseLike,
        next: (error?: unknown) => void,
    ) => void