Pular para o conteúdo principal

Quando usar

Use config: { public: true } quando o chamador não pode enviar X-Jelou-Token:
  • Webhooks de serviços externos (Stripe, GitHub, Twilio)
  • Callbacks de gateways de pagamento
  • APIs públicas acessíveis do navegador

No modo define()

export default define({
  description: "Webhook do Stripe",
  input: z.object({ type: z.string() }),
  config: { public: true, methods: ["POST"], mcp: false },
  handler: async (input, ctx) => {
    return { received: true };
  },
});

No modo app() — per-tool

export default app({
  tools: {
    webhook: define({
      config: { public: true, mcp: false },
      handler: async () => ({ ok: true }),
    }),
    admin: define({
      // protegido por padrão
      handler: async () => ({ ok: true }),
    }),
  },
});

Segurança: validar webhooks

Com funções públicas, a plataforma não valida nada. Seu código é responsável:
handler: async (input, ctx, request) => {
  const signature = request.headers.get("x-webhook-signature");
  const secret = ctx.env.get("WEBHOOK_SECRET");
  // verificar HMAC-SHA256...
}
Nunca confie em uma função pública sem validar a assinatura.