¡De acuerdo! Esto parece la mejor solución. Agregar username y granted_by_username y deprecar user_id y granted_by_id podría permitir un período de transición sin rupturas.
Actualmente, si una insignia es modificada por el sistema (es decir, automáticamente), el webhook devuelve un granted_by_id de -1. ¿Cuál sería el equivalente para granted_by_username?
""(cadena vacía)"<system>"(un valor mágico que no podría ser un nombre de usuario)null- Nada, es decir, omitir
granted_by_usernamede la carga si fue un evento impulsado por el sistema
Supongo que null o nada tendría más sentido.