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 パラメータ付きのハイパーリンクを追加したいと考えています。

実用的な例を挙げると、「カテゴリにアクセスして…ベルアイコンをクリックし、_____を選択してください」と伝える代わりに、以下のように伝えることができます。

ここをクリックして、このフォーラムに新しい投稿が追加されるたびに通知を受け取りたい方。

ユーザーがそのハイパーリンクをクリックすると、URL パラメータで定義したレベルで購読状態が設定されます。

これは、プラグインやテーマコンポーネントとして、これらのアクションを実行できる埋め込み可能なエンティティを作成すれば、比較的簡単に実装できると思います。上記に投稿された AJAX コードの問題点は、グローバルな全ユーザー API キーをクライアントに送信していることです。これは完全に悪い考えです。

OP が示したようにリンクを作成する際に直面する問題は、API 呼び出しには REST の POST アクションが必要ですが、リンクは REST の GET アクションしか発行できないことです。