Change username through API?

I would like to automatically change usernames through the API so they match the email address.
Our community has the policy that the username must be firstname.infix.lastname for a user with the email address firstname.infix.lastname@company.com.
So far I have been changing people’s usernames shortly after registration if they did not match the rule manually through the admin interface and would like to automate that through the API or similar.
I did not find the call in the Discourse API docs - is it hidden somewhere how to rename a user?
Is there an alternate way, i.e. could I somehow enforce that rule already at signup time?

If everyone works for the company, the usual solution is to use sso. They way they can’t create the wrong username.

4 Likes

I would like to dig this back up as I have a similar request. I need a newly registered user’s username to be changed to Firstname_Lastname automatically, but I am already using an SSO (Memberful) and they refuse to do this for ‘security concerns’ :roll_eyes: so I have to do it manually each time a person signs up and inevitably the user emails me about it before I have a chance to change it because it is super boring using only the first name. So is there anyway to to add this as a task? It would of course have to check if the name exists and add a numeral behind it if so. Thanks!

from How does one change a username via the API? - #2 by blake :

Try this endpoint instead:

curl -i -sS -X PUT "http://127.0.0.1:3000/u/blake/preferences/username.json"  \
-H "Content-Type: multipart/form-data;" \
-F "api_key=a66d01fbe98cc51b2747d8bfe99f81d7adca18317fbf3c43aa20f340d8e25bfe"  \
-F "api_username=system" \
-F "new_username=blake2"

And it will output:

{"id":1,"username":"blake2"}