API call to have a user watch specific category(ies)?

According to a reply by @Falco on my post, there’s a way to set users to watch categories using the API. I’ve spent hours searching the web and combing through the API documentation but I cannot find this call.

Does anyone know what API call could be used to set a user to watch a specific category?

Thank you.

You can search for "reverse engineer api " for tips on how to figure out the API call. Also, there is a plugin that will make people in a certain group follow a set of categories.

Thanks for the reply @pfaffman. Are you suggesting the API documentation is incomplete and I need to reverse engineer the API code to find the undocumented API call?

if you don’t see what you’re looking for, it’s almost as easy to reverse engineer as use the documentation.

Have you figured out how to achieve this?

Here is how to do it using jQuery Ajax for anyone interested:

const data = {
	notification_level: 3, 
	api_key: "all_users_api_key",
	api_username: "target_user_username"
};

const settings = {
  url: "/category/{{category_id}}/notifications",
  method: "POST",
  data: data
};

$.ajax(settings).done(response => {
  console.log(response);
});

I’m sure @Osama’s method works, but setting user watches via the category seemed a bit weird to me. The following sets the watch list directly against the user (This is via python requests, but shows what is required).

DISCOURSE_URL - domain, including http(s)
username - user to change
DISCOURSE_API_KEY - api key generated by, and associated with a user
DISCOURSE_API_USERNAME - user who the key is associated with
watch_category - a list of categories the user should be watching

requests.request(‘PUT’, ‘{0}/u/{1}.json’.format(DISCOURSE_URL, username), allow_redirects=False, params={“api_key”:DISCOURSE_API_KEY, “api_username”: DISCOURSE_API_USERNAME}, json={‘watched_category_ids’: [watch_category]}, headers={‘Accept’: ‘application/json; charset=utf-8’})

@SwisherSweet if you end up opening a bug against the docs for missing info on how to modify the watch list/user prefs do post back here with it.

我不确定这段代码能否实现我的目标,但……

我想添加一个超链接,该链接包含某种 URL 参数。当用户点击该链接时,他们会被设置为针对特定类别的“观看/跟踪/正常/静音”状态。

实际应用场景是:与其告诉用户“访问该类别……点击铃铛图标并选择_____

我认为将其编写为插件或主题组件(某种可嵌入的实体,能够为您执行这些操作)相对简单。上述 AJAX 代码的问题在于,您向客户端发送了全局所有用户的 API 密钥。这绝对是个糟糕的做法。

正如原帖所述,您创建链接时会遇到的问题在于:API 调用需要 REST POST 操作,而链接只能发起 REST GET 操作。