Changing a user's email address via api

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!

1 Like

Did you try:

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

with email parameter?

3 Likes

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:

3 Likes

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

1 Like

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!

2 Likes

Cool…Thanks for all the help!

Paul

1 Like