Creating a staged user with an API call

I don’t think they can. They would have to register and update their preferences on that topic or their overall notification preferences.

2 likes

Are there some docs about this endpoint? I have searched API docs but it is not there.

I am looking for a way how to create topic and assign it to a specific user (by discourse-assign plugin).

And also thinking if API key have to by for user system or I can use some other user with minimal permissions (what are that minimal required?).

Just this post: Creating a staged user with an API call - #8 by blake

This is totally doable. Have a look at Reverse engineer the Discourse API and you will see which endpoint the discourse-assign plugin calls.

Nope does not need to be with the system user. You just need a user with enough trust level to create and assign topics.

Thank you for reply. I understand how to assign specific post, but how to reliably find post just created by the /admin/email/handle_mail endpoint? It also seems to queue received calls, so I will not always find it immediately after the first call.

Correct, that endpoint does not return a topic_id.

Do they HAVE to be staged users? Couldn’t you just create the user via the api and then create a topic? Or are people that don’t have accounts yet going to be emailing that endpoint?

It is for public contact form on different products where each have different merchant. I want to assign topic to the specific merchant and also deny access to topics what does not belong to that merchant.

Ik heb een vraag vanuit het perspectief van een niet-ontwikkelaar.

Ik gebruik Discourse als het ticketsysteem van ons bedrijf en heb het succesvol ingesteld om nieuwe onderwerpen te maken van niet-geregistreerde gebruikers in ons ondersteuningsforum.

Af en toe moet ik namens een klant een ticket aanmaken in plaats van dat zij dit direct doen.

Is er een eenvoudige stapsgewijze manier om dit te doen en een onderwerp aan te maken namens iemand die nog geen account op het forum heeft? Ik wil niet dat ze een volledig account krijgen, tenzij ze zich er zelf voor aanmelden.

1 like

I would try creating a topic via incoming email:

This way a staged user will be created on topic creation.

You could create the staged user via the api

curl -i -sS -X POST "http://localhost:4200/users"  \
-H "Content-Type: multipart/form-data"  \
-H "Api-Key: 3e8aa0b7970cf010da24d06215fdc7b3951352c61a59ada70f5f36b4ce890bb2"  \
-H "Api-Username: system"  \
-F "name=2e6ac3603"  \
-F "active=false"  \
-F "staged=true"  \
-F "username=2e6ac3603"  \
-F "email=2e6ac3603@example.com"  \
-F "password=f9b4c3c7ebd1c2877a0ad659be6ca83e"

and then create the topic for the user but, on the user create action discourse will then send an activation email:

{“success”: true,“active”: false,“message”: “You’re almost done! We sent an activation mail to 2e6ac3603@example.com. Please follow the instructions in the mail to activate your account.If it doesn’t arrive, check your spam folder.”}

So are each of these lines separated by a CR at the end? And is there a double space, or a tab before each back-slash?
Sorry, like I said, I’m not a dev so just showing this code isn’t quite enough to get me over the finish line without a little extra info.

So using this method just creates the user, but even though staged=true it sends out the e-mail invite?

The easiest answer is always the best:

So we’ll be using that for our occasional needs.
Thanks for the help.

2 likes