Cancelar a assinatura de um usuário de todos os e-mails via chamada de API?

O site que mantenho usa o Discourse via SSO. Quando um usuário do meu site cancela a assinatura dos e-mails gerados pelo site, gostaria também de cancelar a assinatura do usuário dos e-mails do Discourse. Deve ser possível determinar o necessário analisando as chamadas de API feitas quando as configurações de e-mail do usuário são alteradas pela interface, mas gostaria de saber se há uma maneira mais fácil?

Será sempre o caso de que eles não queiram ver e-mails do site e e-mails da comunidade?

Se existe a possibilidade de que eles queiram cancelar a assinatura de um e não de ambos, por que não simplesmente vincular a uma página onde possam gerenciar suas preferências de e-mail para o Discourse?

Sim. A gestão me disse para cancelar a inscrição dos usuários dos e-mails do Discourse quando o usuário cancelar a inscrição dos e-mails do site.

Para quem estiver interessado em um acompanhamento:
Minha necessidade foi atendida seguindo o guia de engenharia reversa. Foi um processo bastante direto para coletar o conteúdo do payload PUT.

Em Ruby, o payload que acabei obtendo é:
payload = {mailing_list_mode: false, mailing_list_mode_frequency: 1, email_digests: false, email_in_reply_to: false, email_messages_level: 2, email_level: 2, email_previous_replies: 2 }

O campo ‘mailing_list_mode_frequency’ provavelmente pode ser excluído, já que ‘mailing_list_mode’ é false.
O payload é então enviado via PUT para https://DISCOURSEHOST/u/USERNAME.json?api_key=DISCOURSE_SYSTEM_API_KEY&api_username=system

Implementei a mesma lógica, mas os valores não estão sendo refletidos nas preferências de e-mail do usuário no site.

Observe que o método de passar api_key e api_username via parâmetros de consulta está agora obsoleto; você deve usar os cabeçalhos Api-Key e Api-Username atualmente.