Changing a user's email address via api

AI-generated summary

Changing a user’s email address via API

The discussion revolves around modifying a user’s email address via API calls. paully21 is seeking help to achieve this, referencing the UsersEmailController endpoint.

Falco and zogstrip suggest using the PUT https://your.discourse.org/users/<username>/preferences/email endpoint with an email parameter.

After implementing this solution, paully21 receives a 200 OK response but notes that the email address is not updated. Falco clarifies that a confirmation email is sent, requiring user verification.

paully21 realizes that the solution works but asks if it’s possible to bypass the confirmation step. Falco advises against it, emphasizing the importance of confirmations in preventing typos.

Ultimately, paully21 expresses gratitude for the help received.

We have a section on our website that allows users to manage their Discourse account preferences. Most of our users only use Discourse as a sort of mailing list, so we made it easy for them to manage that activity within their website account.

I need to be able to modify the user’s email address via an api call. We do all sorts of stuff with api calls now, but I can’t figure out how to change the email address.

I’m guessing I need the update action of the UsersEmailController (https://github.com/discourse/discourse/blob/master/app/controllers/users_email_controller.rb) but I don’t know how to reach that endpoint.

Does anyone know the URL of the endpoint to change a user’s email address (using the api key and api username method)?

Thanks!

Did you try:

PUT https://meta.discourse.org/users/falco/preferences/email

with email parameter?

If you look at the routes.rb file you will see this line

put "users/:username/preferences/email" => "users_email#update", constraints: {username: USERNAME_ROUTE_FORMAT}

which means you need to PUT https://your.discourse.org/users/<username>/preferences/email

Got ninja-ed by @Falco :wink:

Yep…And I got a 200 OK, but it didn’t change the email address in Discourse.

Looks like it send an e-mail for confirmation! Did you get one :e-mail: ?

It does send a confirmation…Ah…So it works and I had it correct. I guess I’m not going crazy.

Now, is there a way to not send the confirmation and just confirm it straight away?

I don’t think so, unless you wanna mess without the api.

But confirmations are good to stop typos!

Cool…Thanks for all the help!

Paul