¿Agregar un encabezado de autorización para un webhook?

Estoy trabajando en integrar una opción de suscripción al boletín de Mailchimp en los registros de nuevos usuarios, y he avanzado utilizando este plugin de @pfaffman GitHub - pfaffman/discourse-mailchimp-webhook · GitHub

El plugin agrega exitosamente un webhook de “Evento de usuario creado” que aparece en /admin/api/web_hooks/new y, basándome en la API de Mailchimp, configuré la URL de carga útil del webhook de la siguiente manera (con mi DC y el ID de lista reales):
https://[mi-dc].api.mailchimp.com/3.0/lists/[mi-id-de-lista]/members/

Creé un nuevo usuario y el webhook se activó correctamente, pero recibí una respuesta de “Clave API inválida” de Mailchimp. Al leer el código del método build_webhook_headers, no parecía que agregar la clave API al campo “Secreto” funcionara, ya que esto crea una cabecera “X-Discourse-Event-Signature”, aunque lo intenté de todos modos y seguí obteniendo la misma respuesta.

Como prueba, edité manualmente el método build_webhook_headers e inserté la cabecera de autorización que espera la API de Mailchimp, y esto funcionó (recibí una respuesta de éxito y el nuevo miembro apareció en el lado de Mailchimp):

headers['Authorization'] = 'apikey mi-clave-aquí'

Obviamente, editar Discourse directamente no es una solución viable, pero ahora estoy atascado sobre cómo incluir esta cabecera de autorización en la solicitud de mi webhook. Parece haber una forma de ampliar el cuerpo de la solicitud con :after_build_web_hook_body, aunque no he encontrado una forma similar para la cabecera.

Cualquier ayuda para orientarme en la dirección correcta sería muy apreciada. ¡Gracias!

Quería volver a consultar y ver si alguien podría conocer una solución a esta pregunta… aún no he logrado resolverlo. Por ahora, he recurrido temporalmente a usar mi plugin para anular el método build_webhook_headers de la clase Jobs::EmitWebHookEvent, aunque sé que esta no es una solución ideal.

¡Gracias de antemano!

Hola a todos,

¿Entonces no es posible establecer un encabezado Authorization en mi webhook?

¿Para qué se utilizan los webhooks entonces? Parece que el 99 % de los webhooks útiles requerirían este encabezado.

:face_with_raised_eyebrow:

Tengo un requisito similar en el que necesito enviar los detalles del nuevo usuario a una lista de Mailchimp, y me encontré con el mismo problema descrito anteriormente. Pero he encontrado una solución o solución alternativa para este problema.

Dado que la API de Mailchimp utiliza autenticación básica HTTP al proporcionar la clave API con su solicitud, también puede incluir la clave en la URL que está llamando (en lugar del encabezado Authorization, más común).

Por lo tanto, en mi caso, configuré la URL de la carga útil del webhook como:
https://user:[mi-clave-api]@[mi-dc].api.mailchimp.com/3.0/lists/[mi-id-de-lista]/members/

Y eso parece funcionar bien, ya que el usuario ahora se agrega correctamente a la lista de Mailchimp.