Agreed! This seems like the best solution. Adding username and granted_by_username and deprecating user_id and granted_by_id could allow for a non-breaking transition period.
Currently, if a badge is changed by the system (i.e., automatically), the webhook returns a granted_by_id of -1. What would be the equivalent for granted_by_username?
""(empty string)"<system>"(a magic value that couldn’t be a username)null- Nothing – i.e., omit
granted_by_usernamefrom the payload if it was a system-driven event
I would assume null or nothing would make the most sense.