¿Cómo puedo actualizar usuarios vía API usando el user id (no el username)?

Me gustaría que mi aplicación actualice la cuenta de Discourse vinculada de mis usuarios: específicamente el nombre visible y los grupos a los que el usuario pertenece (por ejemplo, cuando se les promueve en mi aplicación, también se les añade a otro grupo del foro).

Esperaba almacenar una referencia de “ID de miembro de Discourse” en la tabla de usuarios de mi aplicación y usarla para realizar actualizaciones, por ejemplo, POST /users/{id}.json con un payload como {"name": "nuevo nombre"}. Pero parece que todas las rutas de la API esperan un username en lugar de un id.

No entiendo por qué esto sería el valor predeterminado: ¿no pueden los usuarios cambiar su nombre de usuario? Parece que eso rompería la integración si lo hicieran.

¿Cómo puedo realizar cambios como este de manera confiable, utilizando un identificador consistente (como id)?

Por ahora, creo que tu mejor opción es realizar dos solicitudes a la API. Una para obtener al usuario por su ID y así obtener el nombre de usuario, y la segunda solicitud para actualizarlo por nombre de usuario.

Existe una opción para actualizar un usuario por external_id, pero no creo que pueda usarse sin tener habilitado el inicio de sesión único (SSO). De esta manera, Discourse almacena el ID del usuario de tu aplicación en lugar de lo contrario.

Gracias, yo también tuve un momento de iluminación similar después de publicar.