Concordo! Isso parece ser a melhor solução. Adicionar username e granted_by_username e descontinuar user_id e granted_by_id poderia permitir um período de transição sem quebras.
Atualmente, se um distintivo for alterado pelo sistema (ou seja, automaticamente), o webhook retorna um granted_by_id de -1. Qual seria o equivalente para granted_by_username?
""(string vazia)"<system>"(um valor mágico que não poderia ser um nome de usuário)null- Nada – ou seja, omitir
granted_by_usernamedo payload se for um evento impulsionado pelo sistema
Eu presumiria que null ou nada fariam mais sentido.